如何从给定节点开始在所有文档节点上获取NodeIterator?

时间:2019-02-27 21:14:45

标签: javascript dom

我需要从页面中某个位置的给定节点开始,以源顺序无限制地遍历HTML文档的节点。我的想法是,我将根据需要从某个起始节点开始向上,向下(同级),向左(parentNode)和向右(childNode)扩展“匹配”,直到某个节点结束“匹配爬行”为止。

NodeIterator非常适合按源顺序遍历节点(根据需要向上,向下和横向穿过树结构),但是始终从某个“根”节点开始,并且不能超出该根。我使用NodeIterator的唯一方法是

  1. document.body初始化它(以使所有文档节点都在作用域内),
  2. 使用潜在的数千个nextNode调用来快速转发它,直到它到达我的起始节点为止(这样我就可以从那里开始匹配了),
  3. 两次(一次用于匹配,一次用于向下匹配)。

第2步和第3步显然是不可取的。

“标准浏览器js”中是否可以使用其他工具或API?要自己实现它,我只知道nextSibling之类的东西,仍然需要大量的工作来实现我需要通过递归之类上下移动,这就像重新发明一样车轮。我宁愿避免使用库,因为我需要使此代码库尽可能地受限制。

0 个答案:

没有答案