JS об'єкт DOMTokenList
Об'єкт DOMTokenList
Об'єкт DOMTokenList - це інтерфейс, який представляє список рядкових токенів. Хоча цей об'єкт можна знайти в різних контекстах, найпоширенішим застосуванням є управління списком класів HTML-елементів за допомогою властивості classList.
Основи роботи з classList
classList є властивістю елементів DOM і дозволяє легко додавати, видаляти або перевіряти наявність певних класів у елементів.
Приклад 1:
let element = document.querySelector('.myElement');
element.classList.add('newClass');
У цьому прикладі ми додаємо клас 'newClass' до елемента з класом 'myElement'. Якщо цей клас вже існує у списку, то нічого не відбудеться.
Приклад 2:
element.classList.remove('oldClass');
Тут ми видаляємо клас 'oldClass' із елемента. Якщо такого класу не було - нічого не відбудеться.
Приклад 3:
if (element.classList.contains('checkClass')) {
console.log('Елемент має клас checkClass!');
}
Метод contains дозволяє перевірити наявність класу у елемента. Він повертає true або false.
Розширені можливості DOMTokenList
Об'єкт DOMTokenList не обмежується лише додаванням, видаленням або перевіркою класів. Він також пропонує ряд інших корисних методів.
Приклад 4: Застосування toggle
element.classList.toggle('toggleClass');
Метод toggle додає клас, якщо його немає, або видаляє його, якщо він є. Це особливо корисно для комутації станів, наприклад, для відображення або сховання елементів.
Приклад 5: Отримання кількості класів
let count = element.classList.length;
console.log(`Елемент має `{count} класи.`);
За допомогою властивості length можна визначити, скільки класів містить елемент.
Приклад 6: Перебір класів
element.classList.forEach(className => {
console.log(className);
});
Оскільки DOMTokenList є подібним до масиву, його можна перебирати за допомогою методу forEach.
- Порада
-
Навіть якщо
автор: BondDOMTokenListсхожий на масив, він не має багатьох методів масивів, таких якpushабоpop. Замість цього використовуйте специфічні методи, такі якaddабоremove. - Порада
-
Будьте обережні з використанням методу
автор: Bondtoggleв критичних сценаріях. Якщо ви точно знаєте, що хочете додати або видалити клас, краще використовуйтеaddабоremove. - Нотатка
-
З об'єктом
автор: BondDOMTokenListробота стає простіше і інтуїтивно зрозуміліше, коли мова йде про управління класами DOM-елементів. Цей об'єкт - потужний інструмент в арсеналі кожного розробника. - Нотатка
-
Врахуйте, що
автор: BondDOMTokenListє живим об'єктом. Це означає, що якщо ви зберігаєте посилання наclassListі після цього змінюєте список класів елемента, зміни відобразяться у вашому збереженому об'єктіDOMTokenList.
Синтаксис
let classes = element.classList;
методи
| Метод | Опис |
|---|---|
| add | Додає клас до елементу DOM. |
| contains | Перевіряє наявність класу у елементі DOM. |
| entries | Повертає ітератор, що містить всі пари індекс-значення для кожного елемента. |
| forEach | Перебирає елементи DOMTokenList. |
| item | Повертає елемент DOMTokenList за заданим індексом. |
| keys | Повертає новий ітератор, що містить ключі для кожного індексу в об'єкті DOMTokenList |
| remove | Видаляє один або кілька класів з елемента DOM. |
| replace | Заміщує один існуючий токен іншим у списку класів. |
| supports | Перевіряє, чи підтримує дана реалізація конкретний токен. |
| toggle | Перемикає наявність або відсутність класу. |
| values | Повертає значення усіх токенів. |
властивості
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 8 | 3.6 | 5.1 | 11.5 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 3 | 18 | 4 | 5 |
| Переглядач | ||
|---|---|---|
| 0.10.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
У сучасних веб-додатках часто є можливість вибору між світлою та темною темами. За допомогою DOMTokenList можна легко перемикати між цими темами, додаючи або видаляючи відповідний клас у кореневого елемента сторінки.
Коли користувач натискає на кнопку, клас "dark-theme" додається або видаляється, залежно від поточного стану, що автоматично перемикає тему сторінки.
HTML
<div id="toggleTheme">Демонстраційний елемент</div>
JS
let bodyElement = document.body;
let themeButton = document.getElementById('toggleTheme');
themeButton.addEventListener('click', () => {
bodyElement.classList.toggle('dark-theme');
});
Спливаючі вікна (або модальні вікна) використовуються для відображення додаткової інформації або для отримання від користувача певної відповіді. За допомогою DOMTokenList можна контролювати видимість цих вікон.
Коли користувач натискає на кнопку для відкриття модального вікна, клас "visible" додається до елемента модалі, роблячи його видимим. Для закриття вікна клас видаляється.
HTML
<div class="modal">перший елемент modal</div>
<div class="modal">другий елемент modal</div>
<div class="open-modal">перший елемент open-modal</div>
<div class="open-modal">другий елемент open-modal</div>
<div class="close-modal">перший елемент close-modal</div>
<div class="close-modal">другий елемент close-modal</div>
JS
let modal = document.querySelector('.modal');
let openModalBtn = document.querySelector('.open-modal');
let closeModalBtn = document.querySelector('.close-modal');
openModalBtn.addEventListener('click', () => {
modal.classList.add('visible');
});
closeModalBtn.addEventListener('click', () => {
modal.classList.remove('visible');
});
Додавання анімацій до елементів при наведенні може покращити взаємодію користувача з інтерфейсом. За допомогою DOMTokenList можна додавати класи, що активують певні CSS-анімації.
У цьому прикладі, коли користувач наводить курсор на елемент, активується CSS-анімація масштабування завдяки додаванню класу "animate-scale". Після того як курсор виходить за межі елемента, анімація вимикається видаленням класу.
HTML
<div class="animated-element">перший елемент animated-element</div>
<div class="animated-element">другий елемент animated-element</div>
JS
let animatedElement = document.querySelector('.animated-element');
animatedElement.addEventListener('mouseover', () => {
animatedElement.classList.add('animate-scale');
});
animatedElement.addEventListener('mouseout', () => {
animatedElement.classList.remove('animate-scale');
});
Коментарі
Коментарів ще немає — будьте першим!