.children
является собственностью элемента . Только у Элементов есть дочерние элементы, и все эти дети имеют тип Элемент.
Однако .childNodes
является собственностью Node . .childNodes
может содержать любой узел.
Таким образом, конкретный пример будет
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.
Если вы хотите манипулировать текстовыми узлами, вы, вероятно, хотите вместо этого .textContent
.