您正在阅读此内容的英文版本,因为该语系尚未翻译。 帮助我们翻译此文章吧!
document.createTreeWalker()
方法,能创建并返回一个 TreeWalker
对象。
语法
treeWalker = document.createTreeWalker(root, whatToShow, filter, entityReferenceExpansion);
参数
- root
- 是这个
TreeWalker
遍历的根节点(rootNode
)。通常这将是一个属于 document 的元素。 - whatToShow 可选
- 它是一个无符号长整型,表示一个整合自
NodeFilter
常量属性的位掩码。对于某些类型的节点,它是一种方便的过滤方式。它默认为 0xFFFFFFFF,表示 SHOW_ALL 常量。Constant 數值 說明 NodeFilter.SHOW_ALL
-1
(that is the max value ofunsigned long
)显示所有节点. NodeFilter.
SHOW_ATTRIBUTE2
显示特性 Attr
节点。这只在当以一个特性节点Attr
为起点节点的TreeWalker
中有意义;在这种情况下,这意味着特性节点会出现在迭代或遍历第一次出现的位置。因为特性节点没有其他节点一样的子节点,所以在文档树中的遍历不会出现特性节点。NodeFilter.
SHOW_CDATA_SECTION8
显示CDTA 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_ENTITY32
显示实体 Entity
节点。This is meaningful only when creating aTreeWalker
with anEntity
node as its root; in this case, it means that theEntity
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_REFERENCE16
显示实体引用 EntityReference
节点。
SHOW_NOTATIONNodeFilter.
2048
显示符号 Notation
节点。 This is meaningful only when creating aTreeWalker
with aNotation
node as its root; in this case, it means that theNotation
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_INSTRUCTION64
显示处理指令 ProcessingInstruction
节点。NodeFilter.
SHOW_TEXT4
顯示文字節點( 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 |
Obsolete | Initial definition. |
浏览器兼容性
We're converting our compatibility data into a machine-readable JSON format.
This compatibility table still uses the old format,
because we haven't yet converted the data it contains.
Find out how you can help!
功能 | 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 |
另见
- 该方法创建的对象继承的接口:
TreeWalker
. - createTreeWalker on MSDN