DOM позволÑÐµÑ Ð½Ð°Ð¼ делаÑÑ ÑÑо Ñгодно Ñ ÑлеменÑами и Ð¸Ñ ÑодеÑжимÑм, но Ð´Ð»Ñ Ð½Ð°Ñала нÑжно полÑÑиÑÑ ÑооÑвеÑÑÑвÑÑÑий DOM-обÑекÑ.
ÐÑе опеÑаÑии Ñ DOM наÑинаÑÑÑÑ Ñ Ð¾Ð±ÑекÑа document. ÐÑо Ð³Ð»Ð°Ð²Ð½Ð°Ñ Â«ÑоÑка вÑ
ода» в DOM. Ðз него Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ полÑÑиÑÑ Ð´Ð¾ÑÑÑп к лÑÐ±Ð¾Ð¼Ñ ÑзлÑ.
Так вÑглÑдÑÑ Ð¾ÑновнÑе ÑÑÑлки, по коÑоÑÑм можно пеÑÐµÑ Ð¾Ð´Ð¸ÑÑ Ð¼ÐµÐ¶Ð´Ñ Ñзлами DOM:
ÐоговоÑим об ÑÑом подÑобнее.
СвеÑÑ Ñ: documentElement и body
СамÑе веÑÑ
ние ÑлеменÑÑ Ð´ÐµÑева доÑÑÑÐ¿Ð½Ñ ÐºÐ°Ðº ÑвойÑÑва обÑекÑа document:
<html>=document.documentElement- СамÑй веÑÑ
ний Ñзел докÑменÑа:
document.documentElement. Ð DOM он ÑооÑвеÑÑÑвÑÐµÑ ÑегÑ<html>. <body>=document.body- ÐÑÑгой ÑаÑÑо иÑполÑзÑемÑй DOM-Ñзел â Ñзел Ñега
<body>:document.body. <head>=document.head- Тег
<head>доÑÑÑпен какdocument.head.
document.body Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñавен nullÐелÑÐ·Ñ Ð¿Ð¾Ð»ÑÑиÑÑ Ð´Ð¾ÑÑÑп к ÑлеменÑÑ, коÑоÑого еÑÑ Ð½Ðµ ÑÑÑеÑÑвÑÐµÑ Ð² Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑкÑипÑа.
Ð ÑаÑÑноÑÑи, еÑли ÑкÑÐ¸Ð¿Ñ Ð½Ð°Ñ
одиÑÑÑ Ð² <head>, document.body в нÑм недоÑÑÑпен, поÑÐ¾Ð¼Ñ ÑÑо бÑаÑÐ·ÐµÑ ÐµÐ³Ð¾ еÑÑ Ð½Ðµ пÑоÑиÑал.
ÐоÑÑомÑ, в пÑимеÑе ниже пеÑвÑй alert вÑÐ²ÐµÐ´ÐµÑ null:
<html>
<head>
<script>
alert( "Ðз HEAD: " + document.body ); // null, <body> еÑÑ Ð½ÐµÑ
</script>
</head>
<body>
<script>
alert( "Ðз BODY: " + document.body ); // HTMLBodyElement, ÑепеÑÑ Ð¾Ð½ еÑÑÑ
</script>
</body>
</html>
null ознаÑÐ°ÐµÑ Â«Ð½Ðµ ÑÑÑеÑÑвÑеÑ»РDOM знаÑение null знаÑÐ¸Ñ Â«Ð½Ðµ ÑÑÑеÑÑвÑеÑ» или Â«Ð½ÐµÑ Ñакого Ñзла».
ÐеÑи: childNodes, firstChild, lastChild
ÐдеÑÑ Ð¸ далее Ð¼Ñ Ð±Ñдем иÑполÑзоваÑÑ Ð´Ð²Ð° пÑинÑипиалÑно ÑазнÑÑ ÑеÑмина:
- ÐоÑеÑние ÑÐ·Ð»Ñ (или деÑи) â ÑлеменÑÑ, коÑоÑÑе ÑвлÑÑÑÑÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑми деÑÑми Ñзла. ÐÑÑгими Ñловами, ÑлеменÑÑ, коÑоÑÑе Ð»ÐµÐ¶Ð°Ñ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвенно внÑÑÑи данного. ÐапÑимеÑ,
<head>и<body>ÑвлÑÑÑÑÑ Ð´ÐµÑÑми ÑлеменÑа<html>. - ÐоÑомки â вÑе ÑлеменÑÑ, коÑоÑÑе Ð»ÐµÐ¶Ð°Ñ Ð²Ð½ÑÑÑи данного, вклÑÑÐ°Ñ Ð´ÐµÑей, Ð¸Ñ Ð´ÐµÑей и Ñ.д.
РпÑимеÑе ниже деÑÑми Ñега <body> ÑвлÑÑÑÑÑ Ñеги <div> и <ul> (и неÑколÑко пÑÑÑÑÑ
ÑекÑÑовÑÑ
Ñзлов):
<html>
<body>
<div>ÐаÑало</div>
<ul>
<li>
<b>ÐнÑоÑмаÑиÑ</b>
</li>
</ul>
</body>
</html>
â¦Ð поÑомки <body>â ÑÑо и пÑÑмÑе деÑи <div>, <ul> и вложеннÑе в ниÑ
: <li> (ÑебÑнок <ul>) и <b> (ÑебÑнок <li>) â в обÑем, вÑе ÑлеменÑÑ Ð¿Ð¾Ð´Ð´ÐµÑева.
ÐоллекÑÐ¸Ñ childNodes ÑодеÑÐ¶Ð¸Ñ ÑпиÑок вÑеÑ
деÑей, вклÑÑÐ°Ñ ÑекÑÑовÑе ÑзлÑ.
ÐÑÐ¸Ð¼ÐµÑ Ð½Ð¸Ð¶Ðµ поÑледоваÑелÑно вÑÐ²ÐµÐ´ÐµÑ Ð´ÐµÑей document.body:
<html>
<body>
<div>ÐаÑало</div>
<ul>
<li>ÐнÑоÑмаÑиÑ</li>
</ul>
<div>ÐонеÑ</div>
<script>
for (let i = 0; i < document.body.childNodes.length; i++) {
alert( document.body.childNodes[i] ); // Text, DIV, Text, UL, ..., SCRIPT
}
</script>
...какой-Ñо HTML-код...
</body>
</html>
ÐбÑаÑим внимание на маленÑкÑÑ Ð´ÐµÑалÑ. ÐÑли запÑÑÑиÑÑ Ð¿ÑÐ¸Ð¼ÐµÑ Ð²ÑÑе, Ñо поÑледним бÑÐ´ÐµÑ Ð²Ñведен ÑÐ»ÐµÐ¼ÐµÐ½Ñ <script>. Ðа Ñамом деле, в докÑменÑе еÑÑÑ ÐµÑÑ Â«ÐºÐ°ÐºÐ¾Ð¹-Ñо HTML-код», но на Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑкÑипÑа бÑаÑÐ·ÐµÑ ÐµÑÑ Ð´Ð¾ него не доÑÑл, поÑÑÐ¾Ð¼Ñ ÑкÑÐ¸Ð¿Ñ Ð½Ðµ Ð²Ð¸Ð´Ð¸Ñ ÐµÐ³Ð¾.
СвойÑÑва firstChild и lastChild обеÑпеÑиваÑÑ Ð±ÑÑÑÑÑй доÑÑÑп к пеÑÐ²Ð¾Ð¼Ñ Ð¸ поÑÐ»ÐµÐ´Ð½ÐµÐ¼Ñ Ð´Ð¾ÑеÑÐ½ÐµÐ¼Ñ ÑлеменÑÑ.
Ðни, по ÑÑÑи, ÑвлÑÑÑÑÑ Ð²Ñего лиÑÑ ÑокÑаÑениÑми. ÐÑли Ñ Ñега еÑÑÑ Ð´Ð¾ÑеÑние ÑзлÑ, ÑÑловие ниже вÑегда веÑно:
elem.childNodes[0] === elem.firstChild
elem.childNodes[elem.childNodes.length - 1] === elem.lastChild
ÐÐ»Ñ Ð¿ÑовеÑки налиÑÐ¸Ñ Ð´Ð¾ÑеÑниÑ
Ñзлов ÑÑÑеÑÑвÑÐµÑ Ñакже ÑпеÑиалÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ elem.hasChildNodes().
DOM-коллекÑии
Ðак Ð¼Ñ Ñже видели, childNodes поÑ
ож на маÑÑив. Ðа Ñамом деле ÑÑо не маÑÑив, а коллекÑÐ¸Ñ â оÑобÑй пеÑебиÑаемÑй обÑекÑ-пÑевдомаÑÑив.
РеÑÑÑ Ð´Ð²Ð° важнÑÑ ÑледÑÑÐ²Ð¸Ñ Ð¸Ð· ÑÑого:
- ÐÐ»Ñ Ð¿ÐµÑебоÑа коллекÑии Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ иÑполÑзоваÑÑ
for..of:
for (let node of document.body.childNodes) {
alert(node); // Ð¿Ð¾ÐºÐ°Ð¶ÐµÑ Ð²Ñе ÑÐ·Ð»Ñ Ð¸Ð· коллекÑии
}
ÐÑо ÑабоÑаеÑ, поÑÐ¾Ð¼Ñ ÑÑо коллекÑÐ¸Ñ ÑвлÑеÑÑÑ Ð¿ÐµÑебиÑаемÑм обÑекÑом (еÑÑÑ ÑÑебÑемÑй Ð´Ð»Ñ ÑÑого меÑод Symbol.iterator).
- ÐеÑÐ¾Ð´Ñ Ð¼Ð°ÑÑивов не бÑдÑÑ ÑабоÑаÑÑ, поÑÐ¾Ð¼Ñ ÑÑо коллекÑÐ¸Ñ â ÑÑо не маÑÑив:
alert(document.body.childNodes.filter); // undefined (Ñ ÐºÐ¾Ð»Ð»ÐµÐºÑии Ð½ÐµÑ Ð¼ÐµÑода filter!)
ÐеÑвÑй пÑÐ½ÐºÑ â ÑÑо Ñ
оÑоÑо Ð´Ð»Ñ Ð½Ð°Ñ. ÐÑоÑой â бÑÐ²Ð°ÐµÑ Ð½ÐµÑдобен, но можно пеÑежиÑÑ. ÐÑли нам Ñ
оÑеÑÑÑ Ð¸ÑполÑзоваÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ меÑÐ¾Ð´Ñ Ð¼Ð°ÑÑива, Ñо Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ ÑоздаÑÑ Ð½Ð°ÑÑоÑÑий маÑÑив из коллекÑии, иÑполÑзÑÑ Array.from:
alert( Array.from(document.body.childNodes).filter ); // Ñделали маÑÑив
DOM-коллекÑии, и даже более â вÑе навигаÑионнÑе ÑвойÑÑва, пеÑеÑиÑленнÑе в ÑÑой главе, доÑÑÑÐ¿Ð½Ñ ÑолÑко Ð´Ð»Ñ ÑÑениÑ.
ÐÑ Ð½Ðµ можем замениÑÑ Ð¾Ð´Ð¸Ð½ доÑеÑний Ñзел на дÑÑгой, пÑоÑÑо напиÑав childNodes[i] = ....
ÐÐ»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ DOM ÑÑебÑÑÑÑÑ Ð´ÑÑгие меÑодÑ. ÐÑ Ñвидим Ð¸Ñ Ð² ÑледÑÑÑей главе.
ÐоÑÑи вÑе DOM-коллекÑии, за неболÑÑим иÑклÑÑением, живÑе. ÐÑÑгими Ñловами, они оÑÑажаÑÑ ÑекÑÑее ÑоÑÑоÑние DOM.
ÐÑли Ð¼Ñ ÑоÑ
Ñаним ÑÑÑÐ»ÐºÑ Ð½Ð° elem.childNodes и добавим/Ñдалим ÑÐ·Ð»Ñ Ð² DOM, Ñо они поÑвÑÑÑÑ Ð² ÑоÑ
ÑанÑнной коллекÑии авÑомаÑиÑеÑки.
for..in Ð´Ð»Ñ Ð¿ÐµÑебоÑа коллекÑийÐоллекÑии пеÑебиÑаÑÑÑÑ Ñиклом for..of. ÐекоÑоÑÑе наÑинаÑÑие ÑазÑабоÑÑики пÑÑаÑÑÑÑ Ð¸ÑполÑзоваÑÑ Ð´Ð»Ñ ÑÑого Ñикл for..in.
Ðе делайÑе Ñак. Цикл for..in пеÑебиÑÐ°ÐµÑ Ð²Ñе пеÑеÑиÑлÑемÑе ÑвойÑÑва. Ð Ñ ÐºÐ¾Ð»Ð»ÐµÐºÑий еÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе «лиÑние», Ñедко иÑполÑзÑемÑе ÑвойÑÑва, коÑоÑÑе обÑÑно нам не нÑжнÑ:
<body>
<script>
// вÑÐ²Ð¾Ð´Ð¸Ñ 0, 1, length, item, values и дÑÑгие ÑвойÑÑва.
for (let prop in document.body.childNodes) alert(prop);
</script>
</body>
СоÑеди и ÑодиÑелÑ
СоÑеди â ÑÑо ÑзлÑ, Ñ ÐºÐ¾ÑоÑÑÑ Ð¾Ð´Ð¸Ð½ и ÑÐ¾Ñ Ð¶Ðµ ÑодиÑелÑ.
ÐапÑимеÑ, здеÑÑ <head> и <body> ÑоÑеди:
<html>
<head>...</head><body>...</body>
</html>
- говоÑÑÑ, ÑÑо
<body>â «ÑледÑÑÑий» или «пÑавÑй» ÑоÑед<head> - Ñакже можно ÑказаÑÑ, ÑÑо
<head>«пÑедÑдÑÑий» или «левÑй» ÑоÑед<body>.
СледÑÑÑий Ñзел Ñого же ÑодиÑÐµÐ»Ñ (ÑледÑÑÑий ÑоÑед) â в ÑвойÑÑве nextSibling, а пÑедÑдÑÑий â в previousSibling.
РодиÑÐµÐ»Ñ Ð´Ð¾ÑÑÑпен ÑеÑез parentNode.
ÐапÑимеÑ:
// ÑодиÑелем <body> ÑвлÑеÑÑÑ <html>
alert( document.body.parentNode === document.documentElement ); // вÑÐ²ÐµÐ´ÐµÑ true
// поÑле <head> идÑÑ <body>
alert( document.head.nextSibling ); // HTMLBodyElement
// пеÑед <body> наÑ
одиÑÑÑ <head>
alert( document.body.previousSibling ); // HTMLHeadElement
ÐавигаÑÐ¸Ñ ÑолÑко по ÑлеменÑам
ÐавигаÑионнÑе ÑвойÑÑва, опиÑаннÑе вÑÑе, оÑноÑÑÑÑÑ ÐºÐ¾ вÑем Ñзлам в докÑменÑе. Ð ÑаÑÑноÑÑи, в childNodes наÑ
одÑÑÑÑ Ð¸ ÑекÑÑовÑе ÑÐ·Ð»Ñ Ð¸ ÑзлÑ-ÑлеменÑÑ Ð¸ ÑзлÑ-комменÑаÑии, еÑли они еÑÑÑ.
Ðо Ð´Ð»Ñ Ð±Ð¾Ð»ÑÑинÑÑва Ð·Ð°Ð´Ð°Ñ ÑекÑÑовÑе ÑÐ·Ð»Ñ Ð¸ ÑзлÑ-комменÑаÑии нам не нÑжнÑ. ÐÑ Ñ Ð¾Ñим манипÑлиÑоваÑÑ Ñзлами-ÑлеменÑами, коÑоÑÑе пÑедÑÑавлÑÑÑ Ñобой Ñеги и ÑоÑмиÑÑÑÑ ÑÑÑÑкÑÑÑÑ ÑÑÑаниÑÑ.
ÐоÑÑÐ¾Ð¼Ñ Ð´Ð°Ð²Ð°Ð¹Ñе ÑаÑÑмоÑÑим дополниÑелÑнÑй Ð½Ð°Ð±Ð¾Ñ ÑÑÑлок, коÑоÑÑе ÑÑиÑÑваÑÑ ÑолÑко ÑзлÑ-ÑлеменÑÑ:
ÐÑи ÑÑÑлки поÑ
ожи на Ñе, ÑÑо ÑанÑÑе, ÑолÑко в ÑÑде меÑÑ ÑÑÐ¾Ð¸Ñ Ñлово Element:
childrenâ коллекÑÐ¸Ñ Ð´ÐµÑей, коÑоÑÑе ÑвлÑÑÑÑÑ ÑлеменÑами.firstElementChild,lastElementChildâ пеÑвÑй и поÑледний доÑеÑний ÑлеменÑ.previousElementSibling,nextElementSiblingâ ÑоÑеди-ÑлеменÑÑ.parentElementâ ÑодиÑелÑ-ÑлеменÑ.
parentElement? Разве Ð¼Ð¾Ð¶ÐµÑ ÑодиÑÐµÐ»Ñ Ð±ÑÑÑ Ð½Ðµ ÑлеменÑом?СвойÑÑво parentElement возвÑаÑÐ°ÐµÑ ÑодиÑелÑ-ÑлеменÑ, а parentNode возвÑаÑÐ°ÐµÑ Â«Ð»Ñбого ÑодиÑелÑ». ÐбÑÑно ÑÑи ÑвойÑÑва одинаковÑ: они оба полÑÑаÑÑ ÑодиÑелÑ.
Ðа иÑклÑÑением document.documentElement:
alert( document.documentElement.parentNode ); // вÑÐ²ÐµÐ´ÐµÑ document
alert( document.documentElement.parentElement ); // вÑÐ²ÐµÐ´ÐµÑ null
ÐÑиÑина в Ñом, ÑÑо ÑодиÑелем коÑневого Ñзла document.documentElement (<html>) ÑвлÑеÑÑÑ document. Ðо document â ÑÑо не Ñзел-ÑлеменÑ, Ñак ÑÑо parentNode веÑнÑÑ ÐµÐ³Ð¾, а parentElement неÑ.
ÐÑа деÑÐ°Ð»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð°, еÑли Ð¼Ñ Ñ
оÑим пÑойÑи ввеÑÑ
по ÑепоÑке ÑодиÑелей Ð¾Ñ Ð¿ÑоизволÑного ÑлеменÑа elem к <html>, но не до document:
while(elem = elem.parentElement) { // идÑи навеÑÑ
до <html>
alert( elem );
}
Ðзменим один из пÑимеÑов вÑÑе: заменим childNodes на children. ТепеÑÑ Ñикл вÑÐ²Ð¾Ð´Ð¸Ñ ÑолÑко ÑлеменÑÑ:
<html>
<body>
<div>ÐаÑало</div>
<ul>
<li>ÐнÑоÑмаÑиÑ</li>
</ul>
<div>ÐонеÑ</div>
<script>
for (let elem of document.body.children) {
alert(elem); // DIV, UL, DIV, SCRIPT
}
</script>
...
</body>
</html>
ÐÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ ÑÑÑлок: ÑаблиÑÑ
Ðо ÑÐ¸Ñ Ð¿Ð¾Ñ Ð¼Ñ Ð¾Ð¿Ð¸ÑÑвали оÑновнÑе навигаÑионнÑе ÑÑÑлки.
ÐекоÑоÑÑе ÑÐ¸Ð¿Ñ DOM-ÑлеменÑов пÑедоÑÑавлÑÑÑ Ð´Ð»Ñ ÑдобÑÑва дополниÑелÑнÑе ÑвойÑÑва, ÑпеÑиÑиÑнÑе Ð´Ð»Ñ Ð¸Ñ Ñипа.
ТаблиÑÑ â оÑлиÑнÑй пÑÐ¸Ð¼ÐµÑ ÑÐ°ÐºÐ¸Ñ ÑлеменÑов.
ÐÐ»ÐµÐ¼ÐµÐ½Ñ <table>, в дополнение к ÑвойÑÑвам, о коÑоÑÑÑ
ÑеÑÑ Ñла вÑÑе, поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑледÑÑÑие:
table.rowsâ коллекÑÐ¸Ñ ÑÑÑок<tr>ÑаблиÑÑ.table.caption/tHead/tFootâ ÑÑÑлки на ÑлеменÑÑ ÑаблиÑÑ<caption>,<thead>,<tfoot>.table.tBodiesâ коллекÑÐ¸Ñ ÑлеменÑов ÑаблиÑÑ<tbody>(по ÑпеÑиÑикаÑии Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð±Ð¾Ð»ÑÑе одного).
<thead>, <tfoot>, <tbody> пÑедоÑÑавлÑÑÑ ÑвойÑÑво rows:
tbody.rowsâ коллекÑÐ¸Ñ ÑÑÑок<tr>ÑекÑии.
<tr>:
tr.cellsâ коллекÑиÑ<td>и<th>ÑÑеек, Ð½Ð°Ñ Ð¾Ð´ÑÑÐ¸Ñ ÑÑ Ð²Ð½ÑÑÑи ÑÑÑоки<tr>.tr.sectionRowIndexâ Ð½Ð¾Ð¼ÐµÑ ÑÑÑоки<tr>в ÑекÑÑей ÑекÑии<thead>/<tbody>/<tfoot>.tr.rowIndexâ Ð½Ð¾Ð¼ÐµÑ ÑÑÑоки<tr>в ÑаблиÑе (вклÑÑÐ°Ñ Ð²Ñе ÑÑÑоки ÑаблиÑÑ).
<td> and <th>:
td.cellIndexâ Ð½Ð¾Ð¼ÐµÑ ÑÑейки в ÑÑÑоке<tr>.
ÐÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ:
<table id="table">
<tr>
<td>один</td><td>два</td>
</tr>
<tr>
<td>ÑÑи</td><td>ÑеÑÑÑе</td>
</tr>
</table>
<script>
// вÑÐ²Ð¾Ð´Ð¸Ñ ÑодеÑжимое пеÑвой ÑÑÑоки, вÑоÑой ÑÑейки
alert( table.rows[0].cells[1].innerHTML ) // "два"
</script>
СпеÑиÑикаÑиÑ: tabular data.
СÑÑеÑÑвÑÑÑ Ñакже дополниÑелÑнÑе навигаÑионнÑе ÑÑÑлки Ð´Ð»Ñ HTML-ÑоÑм. ÐÑ ÑаÑÑмоÑÑим Ð¸Ñ Ð¿Ð¾Ð·Ð¶Ðµ, когда наÑнÑм ÑабоÑаÑÑ Ñ ÑоÑмами.
ÐÑого
ÐолÑÑив DOM-Ñзел, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ пеÑейÑи к его ближайÑим ÑоÑедÑм иÑполÑзÑÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑионнÑе ÑÑÑлки.
ÐÑÑÑ Ð´Ð²Ð° оÑновнÑÑ Ð½Ð°Ð±Ð¾Ñа ÑÑÑлок:
- ÐÐ»Ñ Ð²ÑеÑ
Ñзлов:
parentNode,childNodes,firstChild,lastChild,previousSibling,nextSibling. - ТолÑко Ð´Ð»Ñ Ñзлов-ÑлеменÑов:
parentElement,children,firstElementChild,lastElementChild,previousElementSibling,nextElementSibling.
ÐекоÑоÑÑе Ð²Ð¸Ð´Ñ DOM-ÑлеменÑов, напÑÐ¸Ð¼ÐµÑ ÑаблиÑÑ, пÑедоÑÑавлÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ÑÑÑлки и коллекÑии Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÑÐ²Ð¾ÐµÐ¼Ñ ÑодеÑжимомÑ.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)