为什么TreeWalker currentNode默认为根节点?

时间:2015-02-24 15:28:00

标签: javascript dom-traversal

构建TreeWalker时,为什么currentNode指向根,即使它可能没有通过过滤条件?

我希望它为null,直到我调用nextNode,以便我可以看到root是否传递了传递给它的过滤条件。

我想这是它的设计方式,我只是不太明白原因。它不适合我查找具有特定属性集的所有元素的用例,包括根。如果我找到根的父母,我包括我不想要的兄弟姐妹。

2 个答案:

答案 0 :(得分:1)

current node不代表最后一次方法调用的结果,但它表示walk的当前状态,即从中进行下一步的节点。它绝不能为null,实际上可能是一个不能通过过滤器的节点 - 它可以任意设置(手动,不仅仅是步骤方法)。

只有所有方法调用的返回值都是经过筛选的节点,那些可以是null

  

它不适合我查找具有特定属性集的所有元素的用例,包括根。

如果匹配过滤器,则使用parentNode method最终会转到根节点,否则会转到null

答案 1 :(得分:0)

currentNode指向根,因为它可以递归遍历文档子树,将每个childNode称为其自己的树的根。它不一定指向文档的根,只是指向创建树的root节点。见tree traversal