document.createTreeWalker()
document.createTreeWalker()
方法,能创建并返回一个 TreeWalker
对象。
语法
treeWalker = document.createTreeWalker(root, whatToShow, filter, entityReferenceExpansion);
参数
root
- 是遍历这个
TreeWalker
的根节点 (rootNode
)。通常这是文档的一个元素。 - whatToShow 可选
- 一个无符号长整型,表示一个整合自
NodeFilter
常量属性的位掩码。这是筛选特定类型节点的便捷方式。默认为 0xFFFFFFFF,表示SHOW_ALL
常量。常量 数值 描述 NodeFilter.SHOW_ALL
-1
(that is the max value ofunsigned long
)显示所有节点。
DeprecatedNodeFilter.
SHOW_ATTRIBUTE2
显示特性 Attr
节点。这只在当以一个特性节点Attr
为起点节点的TreeWalker
中有意义;在这种情况下,这意味着特性节点会出现在迭代或遍历第一次出现的位置。因为特性节点没有其他节点一样的子节点,所以在文档树中的遍历不会出现特性节点。
DeprecatedNodeFilter.
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
节点
DeprecatedNodeFilter.
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.
DeprecatedNodeFilter.
SHOW_ENTITY_REFERENCE16
显示实体引用 EntityReference
节点。
Deprecated
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
(en-US)节点。NodeFilter.
SHOW_TEXT4
顯示文字節點 ( Text
nodes). - filter 可选
- 一个可选的
NodeFilter
,即一个具有acceptNode
方法的对象,此方法被TreeWalker
调用以决定是否接受已通过whatToShow
检查的节点。 - entityReferenceExpansion 可选
- 一个
Boolean
(en-US) 标识,指示当丢弃一个EntityReference
时是否同时丢弃其子树。
返回值
一个新的 TreeWalker
对象。
示例
以下示例遍历 body 下的所有节点,将节点集合缩小至元素,简单地传递每个可接受的节点(也可在 acceptNode()
方法中缩小集合),然后利用创建的 TreeWalker 迭代器在节点上推进(现在是所有的元素)并把它们推入一个数组。
var treeWalker = document.createTreeWalker( document.body, NodeFilter.SHOW_ELEMENT, { acceptNode: function(node) { return NodeFilter.FILTER_ACCEPT; } }, false ); var nodeList = []; var 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
。