document.createTreeWalker() - Web API 接口参考 编辑
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
)显示所有节点。 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
时是否同时丢弃其子树。
返回值
一个新的 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(); }
规范
规范 | 状态 | 备注 |
---|---|---|
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. |
浏览器兼容性
BCD tables only load in the browser
参见
- 该函数创建的接口对象:
TreeWalker
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论