TreeWalker
TreeWalker 对象用于表示文档子树中的节点和它们的位置。
TreeWalker 可以使用 Document.createTreeWalker() 方法创建。
属性
这个接口不继承任何属性。
TreeWalker.root(en-US) 只读-
返回一个
Node,表示新建TreeWalker时所声明的根节点。 TreeWalker.whatToShow(en-US) 只读-
返回一个
unsigned long类型的常量位掩码,表示需要筛选的Node类型。不匹配的节点会跳过,但其子节点,如果符合条件,则也会被包含。可能的值如下:常量 数字值 描述 NodeFilter.SHOW_ALL4294967295(unsigned long类型的最大值)显示所有节点。 NodeFilter.SHOW_ATTRIBUTE已弃用2显示 Attr节点,这意味着使用TreeWalker访问Attr节点时,需要让这些节点处于遍历的开始位置。这是因为这些节点不是任何节点的后代,并不处于文档树之上。NodeFilter.SHOW_CDATA_SECTION已弃用8显示 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_ENTITY已弃用32遗留属性,不再可用。 NodeFilter.SHOW_ENTITY_REFERENCE已弃用16遗留属性,不再可用。 NodeFilter.SHOW_NOTATION已弃用2048遗留属性,不再可用。 NodeFilter.SHOW_PROCESSING_INSTRUCTION64显示 ProcessingInstruction(en-US) 节点。NodeFilter.SHOW_TEXT4显示 Text节点。 TreeWalker.filter(en-US) 只读-
返回一个实现
NodeFilter接口的对象,这个对象用来挑选相关的节点。 TreeWalker.currentNode(en-US)-
返回
TreeWalker当前指向的Node。
方法
这个接口不继承任何方法。
备注: 对于 TreeWalker,一个节点是否可见只取决于 whatToShow 和 filter 两个参数。(和元素是否在屏幕上可见无关。)
TreeWalker.parentNode()(en-US)-
移动当前
Node到文档顺序中的第一个“可见”的祖先节点,并返回该节点。如果没有这样的节点,则会返回 null,同时也不会发生移动。 TreeWalker.firstChild()(en-US)-
移动当前
Node到当前节点的第一个“可见”子节点,并返回该节点。如果没有这样的节点,则会返回 null,同时也不会发生移动。html
<!DOCTYPE html> <html lang="en"> <head><title>Demo</title> <body> <div id="container"></div> </body> </html>js
let walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ALL); let node = walker.firstChild(); // nodeName: "#text"但如果我们这样做:
js
let walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT); let node = walker.firstChild(); // nodeName: "DIV"这同样应用于
nextSibling()、previousSibling()、firstChild()和lastChild()。 TreeWalker.lastChild()(en-US)-
移动当前
Node到当前节点的最末一个“可见”子节点,并返回该节点。如果没有这样的节点,则会返回 null,同时也不会发生移动。 TreeWalker.previousSibling()(en-US)-
移动当前
Node到当前节点的前一个兄弟节点,并返回该节点。如果没有这样的节点,则会返回 null,同时也不会发生移动。 TreeWalker.nextSibling()(en-US)-
移动当前
Node到当前节点的后一个兄弟节点,并返回该节点。如果没有这样的节点,则会返回 null,同时也不会发生移动。 TreeWalker.previousNode()(en-US)-
移动当前
Node到文档顺序中前一个节点,并返回该节点。如果没有这样的节点,则会返回 null,同时也不会发生移动。 TreeWalker.nextNode()(en-US)-
移动当前
Node到文档顺序中下一个节点,并返回该节点。如果没有这样的节点,则会返回 null,同时也不会发生移动。
规范
| Specification |
|---|
| DOM Standard # interface-treewalker |
浏览器兼容性
BCD tables only load in the browser
参见
- 构造函数:
Document.createTreeWalker()。 - 相关接口:
NodeFilter、NodeIterator。