Властивості та атрибути
Під час побудови DOM-дерева, деякі стандартні HTML-атрибути стають властивостями елементів. Подивимося на декілька властивостей, які часто використовуються.
value
- містить поточний текстовий контент елементів форм.checked
- зберігає стан чекбокса або радіокнопки.name
- зберігає значення, вказане в HTML-атрибуті name.src
- шлях до зображення тегу<img>
.
Властивість textContent
elem.textContent
повертає текстовий контент всередині елемента. Доступний для читання і запису. Неважливо, що буде передано в textContent
, дані завжди будуть записані як текст.
Властивість classList
У властивості classList
зберігається об'єкт з методами для роботи з класами елемента.
elem.classList.contains(cls)
- повертаєtrue
абоfalse
, залежно від наявності класуcls
в елемента.elem.classList.add(cls)
- додає класcls
до списку класів елемента.elem.classList.remove(cls)
- видаляє класcls
зі списку класів елемента.elem.classList.toggle(cls)
- якщо відсутній класcls
, то додає його, якщо - присутній, навпаки - видаляє.elem.classList.replace(oldClass, newClass)
- замінює існуючий класoldClass
на вказанийnewClass
.
Властивість style
Використовується для читання та зміни інлайнових стилів. Повертає об'єкт CSSStyleDeclaration
, який містить список усіх властивостей, визначених тільки у вбудованих стилях елемента, а не увесь CSS. Під час запису властивості записуються в camelCase
, тобто background-color
перетворюється на element.style.backgroundColor
тощо.
const button = document.querySelector(".btn");
button.style.backgroundColor = "teal";
button.style.fontSize = "24px";
button.style.textAlign = "center";
console.log(button.style); // inline styles object
На практиці стилізація елементів виконується шляхом додавання CSS-класів. Властивість style
використовується для додавання будь-яких динамічних стилів, наприклад, під час анімації.
Атрибути
DOM-елементам відповідають HTML-теги, які містять текстові атрибути. Доступ до атрибутів здійснюється за допомогою стандартних методів. Ці методи працюють зі значенням, яке знаходиться в HTML.
elem.hasAttribute(name)
- перевіряє наявність атрибута, повертаєtrue
абоfalse
.elem.getAttribute(name)
- отримує значення атрибута і повертає його.elem.setAttribute(name, value)
- встановлює атрибут.elem.removeAttribute(name)
- видаляє атрибут.elem.attributes
- властивість, що повертає об'єкт усіх атрибутів елемента.
data-атрибути
Дозволяють додати до тегу довільний атрибут і отримати його значення в JavaScript. Цю можливість використовують для того, щоб спростити написання коду, наприклад, зв'язати дані і розмітку за унікальним ідентифікатором, вказати тип дії кнопки тощо.
<button type="button" data-action="save">Save</button>
<button type="button" data-action="close">Close</button>
Для отримання значення data-атрибута
використовується властивість dataset
, після якого стоїть ім'я атрибута. Тобто data-
відкидається, а інша частина імені записується як ім'я властивості об'єкта.
const saveBtn = document.querySelector('button[data-action="save"]');
console.log(saveBtn.dataset.action); // "save"
const closeBtn = document.querySelector('button[data-action="close"]');
console.log(closeBtn.dataset.action); // "close"