Властивості та атрибути
Під час побудови 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"