树形遍历器
TreeWalker
对象表示文档子树的节点及其内部的位置。
可以使用 Document.createTreeWalker()
方法创建 TreeWalker
。
实例属性
此接口不继承任何属性。
TreeWalker.root
只读-
返回创建
TreeWalker
时指定的根Node
。 TreeWalker.whatToShow
只读-
返回一个
unsigned long
,它是一个位掩码,由描述必须呈现的Node
类型常量组成。不匹配的节点将被跳过,但其子节点可能会被包含在内,如果相关的话。可能的值是常量 数值 描述 NodeFilter.SHOW_ALL
4294967295
(即unsigned long
的最大值)显示所有节点。 NodeFilter.SHOW_ATTRIBUTE
已弃用2
显示属性 Attr
节点。这仅在使用Attr
节点作为根创建TreeWalker
时有意义。在这种情况下,这意味着属性节点将出现在迭代或遍历的第一个位置。由于属性永远不会是其他节点的子节点,因此在遍历文档树时它们不会出现。NodeFilter.SHOW_CDATA_SECTION
已弃用8
显示 CDATASection
节点。NodeFilter.SHOW_COMMENT
128
显示 Comment
节点。NodeFilter.SHOW_DOCUMENT
256
显示 Document
节点。NodeFilter.SHOW_DOCUMENT_FRAGMENT
1024
显示 DocumentFragment
节点。NodeFilter.SHOW_DOCUMENT_TYPE
512
显示 DocumentType
节点。NodeFilter.SHOW_ELEMENT
1
显示 Element
节点。NodeFilter.SHOW_ENTITY
已弃用32
遗留,不再可用。 NodeFilter.SHOW_ENTITY_REFERENCE
已弃用16
遗留,不再可用。 NodeFilter.SHOW_NOTATION
已弃用2048
遗留,不再可用。 NodeFilter.SHOW_PROCESSING_INSTRUCTION
64
显示 ProcessingInstruction
节点。NodeFilter.SHOW_TEXT
4
显示 Text
节点。 TreeWalker.filter
只读-
返回与该
TreeWalker
关联的NodeFilter
,用于选择相关节点。 TreeWalker.currentNode
-
是
TreeWalker
当前指向的Node
。
实例方法
此接口不继承任何方法。
注意:在 TreeWalker
的上下文中,如果节点存在于由 whatToShow
和 filter
参数参数确定的逻辑视图中,则该节点是可见的。(节点是否在屏幕上可见无关紧要。)
TreeWalker.parentNode()
-
将当前
Node
移动到文档顺序中第一个可见的祖先节点,并返回找到的节点。它还将当前节点移动到该节点。如果没有这样的节点,或者它在对象构造时定义的根节点之前,则返回null
,并且不会更改当前节点。 TreeWalker.firstChild()
-
将当前
Node
移动到当前节点的第一个可见的子节点,并返回找到的子节点。它还将当前节点移动到该子节点。如果没有这样的子节点,则返回null
,并且不会更改当前节点。请注意,firstChild()
返回的节点取决于在实例化TreeWalker
对象时设置的whatToShow
值。假设以下 HTML 树,如果您将whatToShow
设置为NodeFilter.SHOW_ALL
,则对firstChild()
的调用将返回一个Text
节点,而不是HTMLDivElement
对象。html<!DOCTYPE html> <html lang="en"> <head><title>Demo</title> <body> <div id="container"></div> </body> </html>
jslet walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ALL); let node = walker.firstChild(); // nodeName: "#text"
但如果我们这样做
jslet walker = document.createTreeWalker( document.body, NodeFilter.SHOW_ELEMENT, ); let node = walker.firstChild(); // nodeName: "DIV"
同样适用于
nextSibling()
、previousSibling()
、firstChild()
和lastChild()
TreeWalker.lastChild()
-
将当前
Node
移动到当前节点的最后一个可见的子节点,并返回找到的子节点。它还将当前节点移动到该子节点。如果没有这样的子节点,则返回null
,并且不会更改当前节点。 TreeWalker.previousSibling()
-
将当前
Node
移动到其前面的兄弟节点(如果有),并返回找到的兄弟节点。如果没有这样的节点,则返回null
,并且不会更改当前节点。 TreeWalker.nextSibling()
-
将当前
Node
移动到其后面的兄弟节点(如果有),并返回找到的兄弟节点。如果没有这样的节点,则返回null
,并且不会更改当前节点。 TreeWalker.previousNode()
-
将当前
Node
移动到文档顺序中前一个可见的节点,并返回找到的节点。它还将当前节点移动到该节点。如果没有这样的节点,或者它在对象构造时定义的根节点之前,则返回null
,并且不会更改当前节点。 TreeWalker.nextNode()
-
将当前
Node
移动到文档顺序中下一个可见的节点,并返回找到的节点。它还将当前节点移动到该节点。如果没有这样的节点,则返回null
,并且不会更改当前节点。
规范
规范 |
---|
DOM 标准 # interface-treewalker |
浏览器兼容性
BCD 表仅在浏览器中加载
另请参见
- 创建器方法:
Document.createTreeWalker()
。 - 相关接口:
NodeIterator
。