document.createTreeWalker()
document.createTreeWalker() 方法,能创建并返回一个新 TreeWalker 对象。
语法
js
createTreeWalker(root)
createTreeWalker(root, whatToShow)
createTreeWalker(root, whatToShow, filter)
参数
root-
遍历这个
TreeWalker的根节点(Node)。通常这是文档的一个元素。 whatToShow可选-
一个无符号长整型,表示一个整合自
NodeFilter常量属性的位掩码。这是筛选特定类型节点的便捷方式。默认为0xFFFFFFFF,表示SHOW_ALL常量。常量 数值 描述 NodeFilter.SHOW_ALL4294967295(unsigned long类型的最大值)显示所有节点。 NodeFilter.SHOW_ATTRIBUTE已弃用2显示属性 Attr节点。这只在当以一个根Attr节点为起点节点的TreeWalker中才有意义,在这种情况下,这意味着属性节点会出现在迭代或遍历第一次出现的位置。因为属性节点永远不是其他节点的子节点,所以在文档树中的遍历不会出现属性节点。NodeFilter.SHOW_CDATA_SECTION已弃用8显示 CDATA CDATASection节点。NodeFilter.SHOW_COMMENT128显示注释 Comment节点。NodeFilter.SHOW_DOCUMENT256显示文档 Document节点。NodeFilter.SHOW_DOCUMENT_FRAGMENT1024显示文档片段 DocumentFragment节点。NodeFilter.SHOW_DOCUMENT_TYPE512显示文档类型 DocumentType节点。NodeFilter.SHOW_ELEMENT1显示元素 Element节点。NodeFilter.SHOW_ENTITY已弃用32遗留属性,不再可用。 NodeFilter.SHOW_ENTITY_REFERENCE已弃用16遗留属性,不再可用。 NodeFilter.SHOW_NOTATION已弃用2048遗留属性,不再可用。 NodeFilter.SHOW_PROCESSING_INSTRUCTION64显示处理指令 ProcessingInstruction(en-US) 节点。NodeFilter.SHOW_TEXT4显示文字 Text节点。 filter可选-
一个具有
acceptNode方法的NodeFilter对象,此方法被TreeWalker调用以决定是否接受已通过whatToShow检查的节点。
返回值
一个新的 TreeWalker 对象。
示例
以下示例遍历 body 下的所有节点,过滤掉非元素(值为 NodeFilter.SHOW_ELEMENT)节点,将剩余节点标记为可接受(也可在 acceptNode() 方法中缩小集合),然后利用创建的 TreeWalker 迭代器在节点上推进(现在是所有的元素)并把它们推入一个数组。
js
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
参见
- 该函数创建的接口对象:
TreeWalker。