JavaScript和childNodes之间有什么区别?

我发现自己使用JavaScript,我碰到了childNodeschildren属性。 我想知道他们之间的区别是什么。 也是一个比较喜欢的?

.children是元素的属性。 只有元素有孩子,而这些孩子都是元素types。

.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因为通常你不想在你的DOM操作中循环TextNode或者Comments。

如果你想操作TextNode,你可能需要.textContent

Element.children仅返回元素子元素,而Node.childNodes返回所有节点子元素。 请注意,元素是节点,所以这两个元素都可用。

我相信childNodes更可靠。 例如,MDC(链接上面)指出,IE浏览器只有在IE 9 children权利childNodes提供较less的浏览器实现者的错误空间。