MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

这篇翻译不完整。请帮忙从英语翻译这篇文章

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

语法

treeWalker = document.createTreeWalker(root, whatToShow, filter, entityReferenceExpansion);

参数

root
是这个 TreeWalker 遍历的根节点(root Node)。通常这将是一个属于 document 的元素。
whatToShow 可选
它是一个无符号长整型,表示一个整合自 NodeFilter 常量属性的位掩码。对于某些类型的节点,它是一种方便的过滤方式。它默认为 0xFFFFFFFF,表示 SHOW_ALL 常量。
Constant 數值 說明
NodeFilter.SHOW_ALL -1 (that is the max value of unsigned long) 顯示所有節點.
NodeFilter.SHOW_ATTRIBUTE 2 Shows attribute Attr nodes. This is meaningful only when creating a TreeWalker with an Attr node as its root; in this case, it means that the attribute node will appear in the first position of the iteration or traversal. Since attributes are never children of other nodes, they do not appear when traversing over the document tree.
NodeFilter.SHOW_CDATA_SECTION 8 Shows CDATASection nodes.
NodeFilter.SHOW_COMMENT 128 Shows Comment nodes.
NodeFilter.SHOW_DOCUMENT 256 Shows Document nodes.
NodeFilter.SHOW_DOCUMENT_FRAGMENT 1024 Shows DocumentFragment nodes.
NodeFilter.SHOW_DOCUMENT_TYPE 512 Shows DocumentType nodes.
NodeFilter.SHOW_ELEMENT 1 Shows Element nodes.
NodeFilter.SHOW_ENTITY 32 Shows Entity nodes. This is meaningful only when creating a TreeWalker with an Entity node as its root; in this case, it means that the Entity node will appear in the first position of the traversal. Since entities are not part of the document tree, they do not appear when traversing over the document tree.
NodeFilter.SHOW_ENTITY_REFERENCE 16 Shows EntityReference nodes.
NodeFilter.SHOW_NOTATION 2048 Shows Notation nodes. This is meaningful only when creating a TreeWalker with a Notation node as its root; in this case, it means that the Notation node will appear in the first position of the traversal. Since entities are not part of the document tree, they do not appear when traversing over the document tree.
NodeFilter.SHOW_PROCESSING_INSTRUCTION 64 Shows ProcessingInstruction nodes.
NodeFilter.SHOW_TEXT 4 顯示文字節點(Text nodes).
filter 可选
是一个可选的 NodeFilter,即一个具有 acceptNode 方法的对象,此方法被 TreeWalker 调用以决定是否接受已通过 whatToShow 检查的节点。
entityReferenceExpansion 可选
它是一个 Boolean 标识,指示当丢弃一个 EntityReference 时是否同时丢弃其子树。

示例

以下示例遍历 body 下的所有节点,将节点集合缩小至元素,简单地传递每个可接受的节点(也可在 acceptNode() 方法中缩小集合),然后利用创建的 TreeWalker 迭代器在节点上推进(现在是所有的元素)并把它们推入一个数组。

var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW_ELEMENT,
  { acceptNode: function(node) { return NodeFilter.FILTER_ACCEPT; } },
  false
);

var nodeList = [];

while(treeWalker.nextNode()) nodeList.push(treeWalker.currentNode);

规范

规范 状态 备注
DOM
Document.createTreeWalker
Living Standard Removed the expandEntityReferences parameter.
Made the whatToShow and filter parameters optionals.
Document Object Model (DOM) Level 2 Traversal and Range Specification
Document.createTreeWalker
Recommendation Initial definition.

浏览器兼容性

功能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基础支持 1.0 2.0 (1.8.1) 9.0 9.0 3.0
whatToShow and filter optional 1.0 12 (12) 未实现 (Yes) 3.0
expandEntityReferences 1.0 2.0 (1.8.1)
12 (12)移除
9.0 9.0 3.0
功能 Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基础支持 (Yes) 1.0 (1.8.1) (Yes) 9.0 3.0
whatToShow and filter optional (Yes) 12 (12) 未实现 (Yes) 3.0
expandEntityReferences (Yes) 2.0 (1.8.1)
12 (12)移除
(Yes) 9.0 3.0

另见

文档标签和贡献者

 此页面的贡献者: TechQuery, gqqnbig
 最后编辑者: TechQuery,