document.createTreeWalker()

document.createTreeWalker() 方法,能创建并返回一个新 TreeWalker 对象。

语法

createTreeWalker(root)
createTreeWalker(root, whatToShow)
createTreeWalker(root, whatToShow, filter)

参数

root

遍历这个 TreeWalker 的根节点(Node)。通常这是文档的一个元素。

whatToShow 可选

一个无符号长整型,表示一个整合自 NodeFilter 常量属性的位掩码。这是筛选特定类型节点的便捷方式。默认为 0xFFFFFFFF,表示 SHOW_ALL 常量。

常量 数值 描述
NodeFilter.SHOW_ALL 4294967295unsigned long 类型的最大值) 显示所有节点。
NodeFilter.SHOW_ATTRIBUTE 已弃用 2 显示属性 Attr 节点。这只在当以一个根 Attr 节点为起点节点的TreeWalker 中才有意义,在这种情况下,这意味着属性节点会出现在迭代或遍历第一次出现的位置。因为属性节点永远不是其他节点的子节点,所以在文档树中的遍历不会出现属性节点。
NodeFilter.SHOW_CDATA_SECTION 已弃用 8 显示 CDATA CDATASection 节点。
NodeFilter.SHOW_COMMENT 128 显示注释 Comment 节点。
NodeFilter.SHOW_DOCUMENT 256 显示文档 Document 节点。
NodeFilter.SHOW_DOCUMENT_FRAGMENT 1024 显示文档片段 DocumentFragment 节点。
NodeFilter.SHOW_DOCUMENT_TYPE 512 显示文档类型 DocumentType 节点。
NodeFilter.SHOW_ELEMENT 1 显示元素 Element 节点。
NodeFilter.SHOW_ENTITY 已弃用 32 遗留属性,不再可用。
NodeFilter.SHOW_ENTITY_REFERENCE 已弃用 16 遗留属性,不再可用。
NodeFilter.SHOW_NOTATION 已弃用 2048 遗留属性,不再可用。
NodeFilter.SHOW_PROCESSING_INSTRUCTION 64 显示处理指令 ProcessingInstruction (en-US) 节点。
NodeFilter.SHOW_TEXT 4 显示文字 Text 节点。
filter 可选

一个具有 acceptNode 方法的 NodeFilter 对象,此方法被 TreeWalker 调用以决定是否接受已通过 whatToShow 检查的节点。

返回值

一个新的 TreeWalker 对象。

示例

以下示例遍历 body 下的所有节点,过滤掉非元素(值为 NodeFilter.SHOW_ELEMENT)节点,将剩余节点标记为可接受(也可在 acceptNode() 方法中缩小集合),然后利用创建的 TreeWalker 迭代器在节点上推进(现在是所有的元素)并把它们推入一个数组。

const treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW_ELEMENT,
  { acceptNode(node) { return NodeFilter.FILTER_ACCEPT; } }
);

const nodeList = [];
let currentNode = treeWalker.currentNode;

while(currentNode) {
  nodeList.push(currentNode);
  currentNode = treeWalker.nextNode();
}

规范

Specification
DOM Standard
# dom-document-createtreewalker

浏览器兼容性

BCD tables only load in the browser

参见