节点和子节点之间的区别

时间:2014-11-02 07:03:47

标签: dart

以下代码对我很好:

var q = theQty.shadowRoot.children[1].shadowRoot.children[0];

虽然下面的代码给了我一个错误"没有这样的getter' shadowRoot'在' Node'" :

var q = theQty.shadowRoot.nodes[1].shadowRoot.nodes[0];

我无法理解使用节点(索引)或使用子(索引)之间的区别,还有什么想法?

2 个答案:

答案 0 :(得分:3)

主要区别在于nodes将为您提供元素的所有子元素。虽然children只会为您提供element类型的子项。 nodes还将包含评论和文字节点 - 例如。

一个小的JavaScript示例:

var span = document.createElement('span');
span.appendChild(document.createElement('span'));
span.appendChild(document.createTextNode('Test'));
console.log(span.childNodes.length, span.children.length)

将返回2 1。

答案 1 :(得分:1)

children集合的类型为Element,其shadowRoot属性,而nodes是其基类Node的集合。在大多数情况下,它们可能是相同的(尽管Dartium中的Checked模式仍会抛出),因为只有少数其他类(如DocumentDocumentFragment)扩展{{1但不是Node

相关问题