Я нашел себя с помощью JavaScript, и я наткнулся на childNodes
и children
свойства. Мне интересно, какая разница между ними. Также является предпочтительным для другого?
В чем разница между детьми и childNodes в JavaScript?
Ответ 1
.children
является свойством Element. Только у Элементов есть дети, и эти дети - все типа Элемента.
Однако .childNodes
является свойством Node. .childNodes
может содержать любой node.
Таким образом, конкретным примером может быть
var el = document.createElement("div");
el.textContent = "foo"
el.childNodes.length === 1; // TextNode is a node child
el.children.length === 0; // no Element children
Конечно, .children
- DOM4, поэтому поддержка браузера нестабильна, однако если вы используете DOM-shim, ваши проблемы с перекрестным браузером пойдут прочь!
В большинстве случаев вы хотите использовать .children
, потому что обычно вы не хотите перебирать TextNodes или комментарии в вашей DOM-манипуляции.
Если вы хотите манипулировать TextNodes, вы, скорее всего, захотите .textContent
.
Ответ 2
Element.children
возвращает только дочерние элементы, а Node.childNodes
возвращает всех детей node. Обратите внимание, что элементы являются узлами, поэтому оба доступны на элементах.
Я считаю, что childNodes
более надежный. Например, MDC (связанный выше) отмечает, что IE только получил children
прямо в IE 9. childNodes
предоставляет меньше возможностей для ошибок разработчиками браузера.