JS об'єкт Element
Введення до об'єкта Element
Об'єкт Element у JavaScript є ключовою сутністю при роботі з DOM (Document Object Model). Кожен HTML-елемент на веб-сторінці може бути доступний як об'єкт Element, що надає можливість маніпулювати його властивостями, атрибутами, стилями та іншими характеристиками.
Отримання елементів
Перш ніж почати роботу з елементом, його потрібно отримати. Один з найпопулярніших методів це document.querySelector.
const element = document.querySelector(".my-class");
В цьому прикладі ми отримуємо перший елемент, що має клас "my-class". Потім цей елемент можна буде маніпулювати за допомогою різних методів і властивостей об'єкта Element.
Маніпулювання атрибутами
Один з найпростіших способів маніпулювати елементами — це зміна їхніх атрибутів.
element.setAttribute("id", "new-id");
В цьому прикладі ми встановлюємо атрибут "id" елементу зі значенням "new-id". Якщо такий атрибут вже існує, його значення буде замінено.
автор: Bond
Взаємодія з CSS через об'єкт Element
CSS є суттєвою частиною сучасного веб-дизайну, що дозволяє нам стилізувати вміст веб-сторінок для створення вигляду, який є привабливим для користувача. JavaScript надає засоби динамічного взаємодії зі стилями, що дозволяє нам змінювати вигляд сторінки в реальному часі.
Об'єкт Element у JavaScript є ключовим, коли мова йде про маніпулювання CSS. Властивість style цього об'єкта дозволяє нам безпосередньо взаємодіяти з інлайновими стилями елемента.
element.style.color = "red";
В цьому коді ми безпосередньо змінюємо колір тексту вибраного елемента на червоний. Такий підхід прямої взаємодії зі стилями є простим та зручним для швидких змін.
Декілька прийомів взаємодії з CSS через Element:
Змінення розмірів шрифту:
element.style.fontSize = "24px";
Додавання та видалення класів для управління стилями:
Для додавання:
element.classList.add("active");
Для видалення:
element.classList.remove("inactive");
Праця з властивостями, які мають декілька слів:
Замість тире, використовуйте CamelCase:
element.style.backgroundColor = "#f0f0f0";
автор: Bond
Обробка подій
Кожен раз, коли користувач взаємодіє з веб-сторінкою - клікає мишею, наводить курсор, вводить дані у форму тощо - генеруються події. Щоб сторінка могла реагувати на ці дії, розробники використовують обробники подій. Об'єкт Element у JavaScript надає потужні інструменти для роботи з такими обробниками.
Однією з основних функцій при роботі з подіями є addEventListener(). Ця функція дозволяє присвоювати конкретні дії певним подіям.
element.addEventListener("click", function() {
alert("Element clicked!");
});
У прикладі вище ми "слухаємо" подію "click" для певного елемента. Коли на цей елемент клікають, виконується функція, яка виводить вікно сповіщення.
Якщо ж ви плануєте використовувати один і той же обробник для декількох елементів або різних подій, ви можете визначити функцію окремо:
function handleElementClick() {
alert("Element clicked!");
}
element1.addEventListener("click", handleElementClick);
element2.addEventListener("mouseover", handleElementClick);
Важливо розуміти, що можна додавати декілька обробників до одного елемента. Наприклад, якщо ви хочете виконати різні дії при одинарному та подвійному кліку:
element.addEventListener("click", function() {
console.log("Single click detected!");
});
element.addEventListener("dblclick", function() {
console.log("Double click detected!");
});
Пам'ятайте, що управління подіями - це ключ до створення інтерактивних веб-додатків. З допомогою Element та його можливостей реагування на події ви можете створювати динамічні та користувацькі інтерфейси, які зможуть забезпечити підвищений досвід користувача.
- Порада
-
Використовуйте делегування подій. Замість того, щоб присвоювати обробники подій для кожного елемента, присвоюйте один обробник для їхнього батьківського елемента і використовуйте властивість
автор: Bondevent.targetдля визначення конкретного елемента, який був натиснутий. - Порада
-
Хоча більшість сучасних браузерів підтримують основні методи та властивості об'єкта
автор: BondElement, завжди перевіряйте сумісність, особливо якщо вам потрібна підтримка старіших браузерів. - Порада
-
Уникайте прямого змінення стилів через властивість
автор: Bondstyle. Замість прямого змінення стилів елемента за допомогою властивостіstyle, розгляньте можливість додавання або видалення класів за допомогоюclassList. - Нотатка
-
Функція
автор: Bonddocument.querySelectorзавжди повертає перший елемент, що відповідає критеріям вибору. Якщо вам потрібно отримати всі елементи, використовуйтеdocument.querySelectorAll.
Синтаксис
let element = document.querySelector(selector);
методи
| Метод | Опис |
|---|---|
| blur | Видаляє фокус з конкретного елемента HTML. |
| click | Активує подію "клік" для HTML-елементу. |
| cloneNode | Створює копію вузла. |
| closest | Шукає ближній батьківський елемент. |
| compareDocumentPosition | Визначає розташування елемента у відношенні до іншого в DOM. |
| contains | Перевіряє, чи містить елемент інший елемент. |
| focus | Установлює фокус на елементі. |
| getAttribute | Повертає значення атрибуту. |
| getAttributeNode | Повертає об'єкт атрибута за ім'ям. |
| getBoundingClientRect | Повертає розміри та положення елементу в контексті вікна. |
| getElementsByClassName | Повертає псевдомасив елементів, що відповідають заданому імені класу CSS. |
| getElementsByTagName | Повертає колекцію елементів, що відповідають заданому імені тегу HTML. |
| hasAttribute | Перевіряє наявність вказаного атрибута в елементі та повертає true/false. |
| hasAttributes | Перевіряє наявність атрибутів. |
| hasChildNodes | Перевіряє наявність дочірніх вузлів. |
| insertAdjacentElement | Вставляє елемент поруч із вказаним елементом. |
| insertAdjacentHTML | Вставляє HTML код поруч з елементом. |
| insertAdjacentText | Вставляє текст поруч з елементом. |
| insertBefore | Вставляє елемент перед вказаним елементом. |
| isDefaultNamespace | Визначає, чи вказаний простір імен є простором імен за замовчуванням. |
| isEqualNode | Порівнює вміст двох вузлів DOM. |
| isSameNode | Перевіряє, чи вказані вузли є одним і тим же вузлом. |
| matches | Перевіряє, відповідає чи ні елемент селектору. |
| normalize | Об'єднує суміжні текстові вузли в один вузол. |
| querySelector | Повертає перший елемент у документі, який відповідає зазначеному селектору. |
| querySelectorAll | Повертає статичну колекцію всіх елементів, що відповідають зазначеному селектору. |
| remove | Видаляє вузол з дерева DOM, до якого він належить. |
| removeAttribute | Видаляє зазначений атрибут з елемента та повертає його попереднє значення. |
| removeAttributeNode | Видаляє вказаний атрибут з елемента та повертає його вузлове представлення. |
| removeChild | Видаляє зазначений вузол із дерева DOM та повертає його. |
| removeEventListener | Видаляє обробник подій з елементу. |
| replaceChild | Замінює один вузол іншим у вузлі. |
| scrollIntoView | Прокручує елемент у видиму область. |
| setAttribute | Встановлює значення атрибута для елемента. |
| setAttributeNode | Додає атрибутний вузол до елементу. |
| isSupported | Перевіряє, чи підтримує поточний браузер певну функціональність або функцію JavaScript. |
| addEventListener | Дозволяє зареєструвати функцію-слухача подій на вказаному об'єкті. |
| appendChild | Додає елемент до батьківського елементу. |
| requestFullscreen | Перемикає елемент у повноекранний режим, займаючи весь екран. |
властивості
| Властивість | Опис |
|---|---|
| accessKey | Встановлює або повертає клавішу доступу для елемента HTML. |
| attributes | Повертає колекцію атрибутів елемента у вигляді об'єкта NamedNodeMap. |
| childElementCount | Повертає кількість дочірніх елементів вузла. |
| children | Повертає колекцію дочірніх елементів. |
| classList | Надає доступ до класів елементу та дозволяє змінювати їх. |
| className | Надає доступ до класів елементу. |
| clientHeight | Повертає висоту видимої області елемента. |
| clientLeft | Визначає відстань від лівого краю елементу до його внутрішньої рамки. |
| clientTop | Визначає відстань від верхнього краю елемента до його внутрішньої рамки. |
| clientWidth | Повертає ширину видимої частини елементу. |
| contentEditable | Дозволяє вмикати або вимикати редагування вмісту елемента. |
| dir | Встановлює або повертає напрямок тексту вмісту елемента. |
| firstChild | Повертає перший дочірній елемент вузла. |
| firstElementChild | Повертає перший елемент-нащадок. |
| id | Унікальний ідентифікатор елемента. |
| innerHTML | Отримує або встановлює HTML вміст елементу. |
| innerText | Встановлює або отримує текстовий вміст елементу без HTML тегів. |
| isContentEditable | Вказує, чи можна редагувати вміст елемента. |
| lang | Вказує мову, що використовується для вмісту елемента. |
| lastChild | Повертає останню дочірню ноду вузла. |
| lastElementChild | Повертає останній дочірній елемент. |
| namespaceURI | Повертає URI простору імен елемента. |
| nextSibling | Повертає наступний елемент відносно батьківського елемента. |
| nextElementSibling | Повертає наступний елемент на тому самому рівні вузла. |
| nodeName | Повертає ім'я вузла DOM. |
| nodeType | Повертає тип вузла DOM. |
| nodeValue | Містить значення тексту вузла DOM. |
| offsetHeight | Повертає висоту елементу без границь і поля. |
| offsetWidth | Повертає ширину елементу без границь і поля. |
| offsetLeft | Повертає відстань елементу до лівого краю батьківського елементу. |
| offsetParent | Вказує на батьківський елемент в контексті позиціонування. |
| offsetTop | Повертає відстань елементу до верхнього краю батьківського елементу. |
| outerHTML | Повертає HTML вміст елементу разом з самим елементом. |
| outerText | Встановлює або повертає текстовий вміст елементу без HTML-тегів. |
| ownerDocument | Повертає документ, який містить вузол. |
| parentNode | Повертає батьківський вузол вузла. |
| parentElement | Повертає батьківський елемент вузла. |
| previousSibling | Повертає попередній сусідній вузол вузла. |
| previousElementSibling | Повертає попередній сусідній елемент вузла. |
| scrollHeight | Повертає висоту контенту з прокруткою в межах елемента. |
| scrollLeft | Визначає або встановлює горизонтальну прокрутку елементу. |
| scrollWidth | Визначає ширину вмісту, що може бути прокручений в елементі. |
| scrollTop | Визначає або встановлює вертикальну прокрутку елементу. |
| style | Модифікує стилі елемента. |
| tabIndex | Встановлює порядок фокусу елемента. |
| tagName | Повертає назву тегу елемента. |
| textContent | Містить текстовий вміст вузла. |
| title | Містить текст підказки для елемента. |
| childNodes | Містить дочірні вузли елемента. |
Переглядачі
| Переглядач | |||||
|---|---|---|---|---|---|
| 1 | 1 | 1 | 8 | 12 |
| Переглядач | ||||
|---|---|---|---|---|
| 37 | 18 | 4 | 1 |
| Переглядач | ||
|---|---|---|
| 0.10.0 | 1.0 |
Приклади
+ запропонувати свій приклад у пісочниці
У цьому прикладі ми використовуємо метод querySelector для отримання першої кнопки із класом "submit-button". Це може бути корисно, наприклад, для додавання обробників подій або для зміни атрибутів кнопки.
HTML
<div class="submit-button">перший елемент submit-button</div>
<div class="submit-button">другий елемент submit-button</div>
JS
let button = document.querySelector(".submit-button");
У цьому прикладі ми використовуємо classList для того, щоб перевірити наявність класу "hidden" у параграфа із класом "highlighted-text". Якщо клас присутній, він буде видалений, якщо ні – доданий. Це підходить для створення ефектів "показати/сховати".
HTML
<div class="highlighted-text">перший елемент highlighted-text</div>
<div class="highlighted-text">другий елемент highlighted-text</div>
JS
let paragraph = document.querySelector(".highlighted-text");
paragraph.classList.toggle("hidden");
Тут ми додали обробник подій до списку елементів з класом "item-list". Всередині обробника ми перевіряємо, чи має клікований елемент клас "item", і якщо так, виводимо його текстовий вміст. Цей підхід дозволяє нам мати один обробник подій для всього списку, замість того, щоб додавати окремий обробник для кожного елементу в списку.
HTML
<div class="item-list">перший елемент item-list</div>
<div class="item-list">другий елемент item-list</div>
JS
document.querySelector(".item-list").addEventListener("click", function(event) {
if(event.target.classList.contains("item")) {
console.log("Item clicked:", event.target.innerText);
}
});
Коментарі
Коментарів ще немає — будьте першим!