Навігація по DOM
DOM надає широкий спектр можливостей для роботи з елементом і його вмістом, але
для цього, спочатку потрібно отримати посилання на нього. Доступ до DOM
починається з об'єкта document
, з нього можна дістатися до будь-яких
елементів.
document
- це частина глобального об'єкта window
, який доступний у скрипті,
коли він виконується в браузері. Так само як alert
, console.log
, prompt
і
багато інших.
Елементи DOM-дерева мають ієрархічне відношення один до іншого. Для опису відносин використовуються терміни предок (ancestor), нащадок (descendant), батько (parent), дитина (child) і сусід (sibling).
- Найвищий елемент називається кореневим (root node).
- Кожен елемент, крім кореневого, має тільки одного батьківського.
- У елемента може бути скільки завгодно дітей.
- Сусіди - це елементи зі спільним батьківським елементом.
- Дочірні елементи (діти) - елементи, які знаходяться безпосередньо всередині поточного (перша вкладеність).
- Нащадки - усі елементи, які знаходяться у поточному, разом з їхніми дітьми, дітьми їхніх дітей тощо. Тобто все на зразок дерева.
Для навігації по цій ієрархії елементи мають наступні властивості.
elem.parentNode
- вибере батьківськийelem
.elem.childNodes
- псевдомасив, зберігає всі дочірні елементи, включно з текстовими.elem.children
- псевдомасив, зберігає тільки дочірні вузли-елементи, тобто ті, що відповідають тегам.elem.firstChild
- вибере перший дочірній елемент всерединіelem
, включно з текстовими вузлами.elem.firstElementChild
- вибере перший дочірній вузол-елемент всерединіelem
.elem.lastChild
- вибере останній дочірній елемент всерединіelem
, включно з текстовими вузлами.elem.lastElementChild
- вибере останній дочірній вузол-елемент всерединіelem
.elem.previousSibling
- вибере елемент «зліва» відelem
(його попереднього сусіда).elem.previousElementSibling
- вибере вузол-елемент «зліва» відelem
(його попереднього сусіда).elem.nextSibling
- вибере елемент «праворуч» відelem
(його наступного сусіда)elem.nextElementSibling
- вибере вузол-елемент «праворуч» відelem
(його наступного сусіда).
Відкрий цей приклад в окремому вікні і подивися логи в консолі розробника.
DOM-колекції, як-от childNodes
і children
- псевдомасиви (NodeList), у них
немає більшості методів масиву.