пример
var kids = node.childNodes;
В приведенном выше примере дети будут коллекцией всех прямых дочерних узлов узла . Если узел не имеет дочерних узлов, тогда дети будут пустой коллекцией (с нулевой длиной). Возвращенная коллекция является действующей , что означает, что изменения в HTML-коде, который она представляет, немедленно отражаются в коллекции без необходимости извлекать ее снова.
Поэтому, если мы говорим, что узел на самом деле является HTML-элементом ul
<UL> <li> В основном установлен в 1955 году <em> (часть 1) </ em> </ li> <li> В основном установлен в 2015 году <em> (часть 2) </ em> </ li> <li> В основном установлен в 1885 году <em> (часть 3) </ em> </ li> </ UL>
Каждый из этих элементов li
ul
childNodes
0
2
Элементы em
потомками , а не дочерними элементами).
На самом деле этот пример идеализирован, и в некоторых браузерах на самом деле могут быть дополнительные узлы в коллекции childNodes
это связано с тем, что некоторые браузеры считают промежуточные пробелы текстовыми узлами и поэтому считают каждый кусок пробела между структурными узлами текстовым узлом.
Подробнее об этом поведении смотрите в DOM Core .
Описание
Коллекция childNodes представляет собой упорядоченный список всех прямых дочерних узлов этого узла; если нет дочерних узлов, то эта коллекция пуста (имеет нулевую длину). Коллекция childNodes представляет собой NodeList , в котором элементы индексируются численно и отображаются в исходном порядке.
Как и во всех списках узлов, childNodes — это живая коллекция, что означает, что изменения в представляемой коллекции немедленно отражаются в списке узлов (в отличие от статического снимка).
Атрибуты элемента не считаются дочерними узлами и, следовательно, не отображаются в коллекции childNodes2
Эта коллекция только для чтения.
Коллекция не является массивом
Несмотря на то, что коллекция выглядит как массив, она не является массивом — хотя вы можете перебирать ее и ссылаться на ее элементы как массив, вы не можете использовать методы Array, такие как push или pop для нее.