Навигация по 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), у них нет большинства методов массива.
Last updated