- Операторы
- Управляющие инструкции
- JS Объекты
- браузер BOM
- HTML DOM
- Свойства узлов
- «Семья» элементов
- Выборка элементов DOM
- Добавление и удаление узлов
- Размеры и прокрутка
- Intersection Observer API
- Атрибуты и стили
- CSSStyleSheet
- Выделение
- Хранение данных
- События
- HTML Объекты
- Промисы, async/await
- Сетевые запросы
- Бинарные данные и файлы
- Модули
- Классы
- Разное
«Семья» элементов
Дети | |
childNodes | содержит все дочерние узлы, в т.ч. текстовые |
children | содержит все дочерние узлы-элементы |
firstChild | первый дочерний узел |
firstElementChild | первый дочерний узел-элемент |
lastChild | последний дочерний узел |
lastElementChild | последний дочерний узел-элемент |
Родитель | |
parentNode | родительский узел |
parentElement | родительский узел-элемент |
Братья | |
previousSibling | предыдущий братский узел |
previouselementSibling | предыдущий братский узел-элемент |
nextSibling | следующий братский узел |
nextElementSibling | следующий братский узел-элемент |
childNodes
Свойство childNodes хранит в себе коллекцию непосредственных потомков элементов (включая комментарии и текстовые узлы).
Синтаксис
element.childNodes
Примеры
Свойство childNodes содержит всех потомков, в том числе и комментарии и текстовые узлы (текст, и отступы между тегами).
<div id="parent"> <p> Абзац </p> <!-- Коментарий --> </div> <div id="parent1"><p> Абзац1 </p><!-- Коментарий1 --></div> <button onclick="myFunction()" class="Example"> Попробуй childNodes </button> <p id="demo"></p> <script> function myFunction() {var b= ' '; var list = document.getElementById('parent').childNodes; var x = "length nodeType NodeName textContent<br>" x += list.length + b + list[1].nodeType + b + list[1].nodeName + b + list[1].textContent +'<br>'; list = document.getElementById('parent1').childNodes; x += list.length + b + list[1].nodeType + b + list[1].nodeName + ' ' + list[1].textContent; document.getElementById('demo').innerHTML=x; } </script>
children
Свойство children возвращает коллекцию дочерних элементов. Дочерними элементами считаются все теги, которые непосредственно расположены внутри блока.
Синтаксис
element.children
Совместимость с браузерами
Да | 9,0 | Да | Да | Да |
Примеры
<div id="parent"> <p>Абзац 1</p><p>Абзац 2</p><p>Абзац 3</p> </div> <button onclick="myFunction()" class="Example"> Попробуй children </button> <p id="demo"></p> <script> function child (elem) { if (elem.children) return elem.children; // IE 8.0- var a = new Array(), ac=elem.childNodes; for (var i=0,j=0; i < ac.length; i++) {if (ac[i].nodeType === 1) a[j++] = ac[i];} return a; } function myFunction() { var elems = child ( document.getElementById('parent') ); for (var i = 0; i < elems.length; i++) { elems[i].style.color='red'; }} </script>
firstChild
Свойство firstChild возвращает первого потомка данного элемента. Потомками являются не только элементы, но и просто текст, и комментарий HTML.
Если у элемента нет дочерних элементов - возвращается null
.
Синтаксис
node.firstChild
Примеры
<div id="parent"> <p>Первый элемент</p> <div>Второй элемент</div> </div> <div id="parent1"><p>Третий элемент</p><div>Четвертый элемент</div></div> <p id="demo"></p> <script> var e = document.getElementById('parent').firstChild; var x = document.getElementById('demo'); x.innerHTML = e.innerHTML + '; '+e.nodeType + '; ' + e.nodeName +'<br>'; var e = document.getElementById('parent1').firstChild; x.innerHTML += e.innerHTML + '; '+e.nodeType + '; ' + e.nodeName; </script>
firstElementChild
Свойство firstElementChild возвращает первый дочерний элемент. Дочерними элементами считаются все теги, которые непосредственно расположены внутри блока.
Если у элемента нет дочерних элементов - возвращается null
.
Синтаксис
element.firstElementChild
Комментарии
См. похожее свойство firstChild, которое также содержит первого потомка, но учитывая комментарии и текст.
Совместимость с браузерами
Да | 9,0 | Да | Да | Да |
Примеры
<div id="parent"> <p>Первый элемент</p> <p>Второй элемент</p> </div> <script> function first (elem) { if (elem.firstElementChild) return elem.firstElementChild; // для IE 8,0- var el = elem.firstChild; do { if (el.nodeType === 1) { return el; } el = el.nextSibling; } while (el); return null; } document.write('firstElementChild: ' + first(document.getElementById('parent')).outerHTML.replace(/</g,'<' ) ); </script>
lastChild
Свойство lastChild возвращает последнего потомка данного элемента. Потомками являются не только элементы, но и просто текст, и комментарий HTML.
Если у элемента нет дочерних элементов - возвращается null
.
Синтаксис
node.lastChild
Примеры
<div id="parent"> <p>Первый элемент</p> <div>Второй элемент</div> </div> <div id="parent1"><p>Третий элемент</p><div>Четвертый элемент</div></div> <p id="demo"></p> <script> var e = document.getElementById('parent').lastChild; var x = document.getElementById('demo'); x.innerHTML = e.innerHTML + '; '+e.nodeType + '; ' + e.nodeName +'<br>'; var e = document.getElementById('parent1').lastChild; x.innerHTML += e.innerHTML + '; '+e.nodeType + '; ' + e.nodeName; </script>
lastElementChild
Свойство lastElementChild возвращает последний дочерний элемент. Дочерними элементами считаются все теги, которые непосредственно расположены внутри блока.
Если у элемента нет дочерних элементов - возвращается null
.
Синтаксис
element.lastElementChild
Комментарии
См. похожее свойство lastChild, которое также содержит последнего потомка, но учитывая комментарии и текст.
Совместимость с браузерами
Да | 9,0 | Да | Да | Да |
Примеры
<div id="parent"> <p>Первый элемент</p> <p>Второй элемент</p> </div> <script> function last (elem) { if (elem.lastElementChild) return elem.lastElementChild; // для IE 8,0- var el = elem.lastChild; do { if (el.nodeType === 1) { return el; } el = el.previousSibling; } while (el); return null; } document.write('firstElementChild: ' + last(document.getElementById('parent')).outerHTML.replace(/</g,'<' ) ); </script>
parentNode
Свойство parentNode возвращает родительский элемент.
Синтаксис
node.parentNode
Комментарии
Существует также почти идентичное свойство parentElement. Отличия: для тега html
свойство parentNode возвращает document
, а parentElement
возвращает null
.
Примеры
Давайте получим родителя элемента #elem
и выведем на экран его id
:
<div id="parent"> <p id="elem"> Я имею родителя <div id="parent"></p> </div> <script> var elem = document.getElementById('elem'); var parent = elem.parentNode; document.write ('parent = ' + parent + '<br>' + 'parent.nodeName = ' + parent.nodeName + '<br>' + 'parent.id = ' + parent.id+ '<br>' + 'html.parent = ' + document.documentElement.parentNode); </script>
parentElement
Свойство parentElement возвращает родительский элемент.
Синтаксис
node.parentElement
Комментарии
Существует также почти идентичное свойство parentNode. Отличия: для тега html
свойство parentNode
возвращает document
, а parentElement возвращает null
.
Совместимость с браузерами
Да | 9,0 | Да | Да | Да |
Примеры
Давайте получим родителя элемента #elem
:
<div id="parent"> <p id="elem"></p> </div> <script> function parent (elem, num) { num = num || 0; e = elem.parentElement || elem.parentNode; for (var i=0; i < num && e; i++) {e = e.parentElement || e.parentNode;} return e; } var elem = document.getElementById('elem'); var p = parent (elem); // div id=parent var p1 = parent (elem,1); // body var p2 = parent (elem,2); // html var p3 = parent (elem,3); // document var p4 = parent (elem,4); // null document.write (p+'<br>'+p1+'<br>'+p2+'<br>'+p3+'<br>'+p4); </script>
previousSibling
Свойство previousSibling возвращает предыдущий узел на том же уровне дерева узлов или null
.
Синтаксис
node.previousSibling
Примеры
<p>Один</p> <p id="elem">Два</p> <p>Три</p><p id="elem1">Четыре</p> <script> var e = document.getElementById('elem').previousSibling; var s=e.innerHTML + '\n'; e = document.getElementById('elem1').previousSibling; s += e.innerHTML + '\n'; alert (s); </script>
previousElementSibling
Свойство previousElementSibling возвращает предыдущий элемент на том же уровне дерева узлов или null
.
Синтаксис
element.previousElementSibling
Совместимость с браузерами
Да | 9,0 | Да | Да | Да |
Примеры
<p>Один</p> <p id="elem">Два</p> <p>Три</p><p id="elem1">Четыре</p> <script> function previous (elem) { if (elem.previousElementSibling) return elem.previousElementSibling; // IE 8.0- do {elem = elem.previousSibling;} while (elem && elem.nodeType !== 1); return elem; } alert ( previous (document.getElementById('elem')).innerHTML + '\n' + previous (document.getElementById('elem1')).innerHTML ); </script>
nextSibling
Свойство nextSibling возвращает следующий узел на том же уровне дерева узлов или null
.
Синтаксис
node.nextSibling
Примеры
<p id="elem">Один</p> <p>Два</p> <p id="elem1">Три</p><p>Четыре</p> <script> var e = document.getElementById('elem').nextSibling; var s = e.innerHTML + ', nodeName: '+e.nodeName+'; nodeType: '+e.nodeType+'\n'; e = document.getElementById('elem1').nextSibling; s += e.innerHTML; alert (s); </script>
nextElementSibling
Свойство nextElementSibling возвращает следующий элемент на том же уровне дерева узлов или null
.
Синтаксис
element.nextElementSibling
Совместимость с браузерами
Да | 9,0 | Да | Да | Да |
Примеры
<p id="elem">Один</p> <p>Два</p> <p id="elem1">Три</p><p>Четыре</p> <script> function next (elem) { if (elem.nextElementSibling) return elem.nextElementSibling; // IE 8.0- do {elem = elem.nextSibling;} while (elem && elem.nodeType != 1); return elem; } alert ( next (document.getElementById('elem')).innerHTML + '\n' + next (document.getElementById('elem1')).innerHTML ); </script>