JS метод DOMTokenList.keys()


Загальний опис

Метод keys() об'єкта DOMTokenList є важливим інструментом для роботи з набором токенів у JavaScript. Основна функція цього методу полягає у поверненні нового ітератора, який містить ключі для кожного індексу в DOMTokenList. Ключі, в даному випадку, являють собою числові індекси, які відповідають порядковим номерам елементів в об'єкті DOMTokenList. Цей метод є корисним при необхідності перебирання елементів класів, атрибутів, або інших колекцій токенів, що дозволяє програмістам більш ефективно управляти DOM-елементами на веб-сторінці.

Для початку, розглянемо базове використання методу keys(). Припустимо, що у нас є HTML-елемент з декількома класами:

<div id="myElement" class="class1 class2 class3"></div>

Ми можемо отримати доступ до класів цього елемента за допомогою JavaScript, використовуючи об'єкт classList, і потім застосувати метод keys() для отримання ітератора ключів:

const element = document.getElementById('myElement');
const classList = element.classList;
const keysIterator = classList.keys();

for (let key of keysIterator) {
    console.log(key);
}

У цьому прикладі keysIterator містить ключі (індекси) для класів в classList. Цикл for...of перебирає ці ключі, виводячи кожен з них в консоль. Вивід буде виглядати наступним чином:

0
1
2

Це показує, що класи зберігаються у вигляді списку, і метод keys() дозволяє отримати доступ до їхніх індексів.

Детальніше розглянемо застосування методу keys() у поєднанні з іншими методами об'єкта DOMTokenList, такими як item() і contains(). Метод item() дозволяє отримати клас за його індексом, а метод contains() перевіряє наявність певного класу в списку класів. Поєднуючи ці методи, можна створити більш складні логічні конструкції.

Розглянемо приклад, де ми ітеруємося по класам елемента і перевіряємо, чи містять вони певний підрядок:

const element = document.getElementById('myElement');
const classList = element.classList;
const keysIterator = classList.keys();
const substring = 'class';

for (let key of keysIterator) {
    const className = classList.item(key);
    if (className.includes(substring)) {
        console.log(`Клас "${className}" містить підрядок "${substring}".`);
    }
}

У цьому прикладі ми отримуємо кожен клас за його індексом, перевіряємо, чи містить він підрядок substring, і, якщо так, виводимо відповідне повідомлення. Це демонструє, як метод keys() можна використовувати для виконання складніших перевірок і маніпуляцій з класами елементів.

Метод keys() також може бути корисним у випадках, коли потрібно змінити або видалити класи на основі їхніх індексів. Наприклад, можна видаляти кожен другий клас з списку класів елемента:

const element = document.getElementById('myElement');
const classList = element.classList;
const keysIterator = classList.keys();

for (let key of keysIterator) {
    if (key % 2 === 0) {
        const className = classList.item(key);
        classList.remove(className);
    }
}

У цьому прикладі ми видаляємо кожен клас з парним індексом, використовуючи метод remove() об'єкта DOMTokenList. Це показує, як метод keys() можна інтегрувати в алгоритми, що вимагають маніпуляцій з класами на основі їхніх індексів.

Отже, метод keys() об'єкта DOMTokenList є потужним інструментом для роботи з колекціями токенів у JavaScript. Він дозволяє отримувати індекси токенів, що може бути використано для ітерацій, перевірок, змін та видалення класів або інших токенів. Завдяки своїй простоті у використанні та широкому спектру застосувань, цей метод є незамінним у сучасній веб-розробці.

автор: Bond

Порада

Зберігайте ітератор, отриманий від методу keys(), у змінну для багаторазового використання в межах одного циклу або функції. Це допоможе уникнути повторного виклику методу та підвищити ефективність коду. Наприклад:

const element = document.getElementById('myElement');
const keysIterator = element.classList.keys();

for (let key of keysIterator) {
    console.log(element.classList.item(key));
}
автор: Bond
Порада

Комбінуйте метод keys() з іншими методами DOMTokenList, такими як item(), add(), remove(), та toggle(), щоб виконувати більш складні маніпуляції з класами. Наприклад, можна чергувати класи між двома станами:

const element = document.getElementById('myElement');
const keysIterator = element.classList.keys();

for (let key of keysIterator) {
    const className = element.classList.item(key);
    element.classList.toggle(className + '-active');
}
автор: Bond
Порада

Застосовуйте метод keys() для створення динамічних списків класів або інших атрибутів, що потребують послідовного перебору індексів. Це може бути корисно при створенні функціоналу, що залежить від порядку елементів у списку. Наприклад, можна додавати числовий суфікс до кожного класу:

const element = document.getElementById('myElement');
const keysIterator = element.classList.keys();

for (let key of keysIterator) {
    const className = element.classList.item(key);
    element.classList.add(`${className}-${key}`);
}
автор: Bond

Синтаксис

keys()

Повернення

iterator

Повертає ітератор, який містить усі ключі (імена класів) списку класів елемента DOM. Цей ітератор можна використовувати для перебору всіх класів елемента за допомогою циклів або інших конструкцій, що працюють з ітераторами. Ключі в ітераторі представлені як рядки, що відповідають іменам класів. Порядок ключів в ітераторі не визначений.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
42 50 10.1 29 16
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
42 42 50 10.3

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми використовуємо метод keys() об'єкта DOMTokenList для отримання ітератора, який містить усі ключі (імена токенів) списку класів елемента. Це корисно, коли потрібно перебрати всі класи елемента або перевірити, чи наявний певний клас.

HTML

<div id="myElement">Демонстраційний елемент</div>

JS

const element = document.getElementById('myElement');
const classes = element.classList;

// Отримуємо ітератор ключів
const classIterator = classes.keys();

// Перебираємо ключі за допомогою циклу for...of
for (const key of classIterator) {
  console.log(key); // Виводимо назву класу
}
автор: Bond

У цьому складнішому прикладі ми використовуємо метод keys() разом з методом entries() для створення об'єкта, який відображає імена класів у булеві значення, що вказують, чи наявний цей клас в елементі. Це може бути корисним для швидкої перевірки наявності певних класів або для створення більш складних умов на основі класів елемента.

HTML

<div id="myElement">Демонстраційний елемент</div>

JS

const element = document.getElementById('myElement');
const classes = element.classList;

// Створюємо об'єкт, що відображає імена класів у булеві значення
const classMap = [...classes.entries()].reduce((map, [key, value]) => {
  map[key] = value;
  return map;
}, {});

// Перевіряємо наявність певних класів
const hasClass1 = classMap['class1'];
const hasClass2 = classMap['class2'];

// Створюємо складнішу умову на основі класів
if (hasClass1 && !hasClass2) {
  // Виконуємо певну логіку
}
автор: Bond

У цьому прикладі ми маємо елемент div з класом box. При натисканні на чекбокс ми додаємо або видаляємо клас highlight для цього елемента, що змінює його фон. При натисканні на кнопку "Вивести список класів" ми використовуємо метод keys() об'єкта classList для отримання ітератора з іменами класів, а потім виводимо ці імена в div#output.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід