NodeIterator - 表示在 DOM 子树中节点列表成员的迭代器

NodeIterator 接口表示在 DOM 子树中节点列表成员的迭代器。节点将按文档顺序返回。

NodeIterator接口表示DOM子树中节点列表成员的迭代器。节点将按文档顺序返回。

可以使用 Document.createNodeIterator() 方法创建一个 NodeIterator,如下所示:

var nodeIterator = document.createNodeIterator(root, whatToShow, filter);

属性

该接口不继承任何属性。

NodeIterator.root 只读

返回一个 Node,代表创建 NodeIterator 时指定的根节点。

NodeIterator.whatToShow 只读

返回一个 unsigned long,它是由常量组成的位掩码,该常量描述了必须包含的 Node 类型。不匹配的节点将被跳过,但如果相关,则可包括其子节点。可能的值为:

常量 数字值 描述
NodeFilter.SHOW_ALL -1unsigned long 的最大值) 包含所有节点。
NodeFilter.SHOW_ATTRIBUTE 2 包含属性 Attr 节点。仅当创建一个以 Attr 节点为根的 NodeIterator 时,这才有意义。在这种情况下,这意味着属性节点将出现在迭代或遍历的第一个位置。由于属性决不是其他节点的子级,因此在文档树上遍历时它们不会出现。
NodeFilter.SHOW_CDATA_SECTION 8 包含 CDATASection 节点。
NodeFilter.SHOW_COMMENT 128 包含 Comment 节点。
NodeFilter.SHOW_DOCUMENT 256 包含 Document 节点。
NodeFilter.SHOW_DOCUMENT_FRAGMENT 1024 Shows DocumentFragment 节点。
NodeFilter.SHOW_DOCUMENT_TYPE 512 包含 DocumentType 节点。
NodeFilter.SHOW_ELEMENT 1 包含 Element 节点。
NodeFilter.SHOW_ENTITY 32 包含 Entity 节点。仅当创建一个 Entity 节点为根的 NodeIterator 时,这才有意义。在这种情况下,这意味着 Entity 节点将出现在遍历的第一个位置。由于实体不是文档树的一部分,所以在文档树上遍历时它们不会出现。
NodeFilter.SHOW_ENTITY_REFERENCE 16 包含 EntityReference 节点。
NodeFilter.SHOW_NOTATION 2048 包含 Notation 节点。仅当创建一个以 Notation} 节点为根的 NodeIterator 时,这才有意义。在这种情况下,这意味着 Notation 节点将出现在遍历的第一个位置。由于实体不是文档树的一部分,所以在文档树上遍历时它们不会出现。
NodeFilter.SHOW_PROCESSING_INSTRUCTION 64 包含 ProcessingInstruction 节点。
NodeFilter.SHOW_TEXT 4 包含 Text 节点。

NodeIterator.filter 只读

返回用于选择相关节点的 NodeFilter

NodeIterator.expandEntityReferences 只读

一个 Boolean,指示在丢弃 EntityReference 时是否必须同时丢弃其整个子树。

NodeIterator.referenceNode 只读

返回迭代器锚定的 Node

NodeIterator.pointerBeforeReferenceNode 只读

返回一个 Boolean 标志,指示 NodeIterator 是锚定在锚点之前(标志为 true),还是锚点之后(标志为 false)。

方法

该接口不继承任何方法。

NodeIterator.detach()

此操作是空操作。它什么也没做。以前它是告诉引擎不再使用 NodeIterator,但是现在已经没有用了。

NodeIterator.previousNode()

返回文档中的上一个 Node,如果没有则返回 null

NodeIterator.nextNode()

返回文档中的下一个 Node,如果没有则返回 null

规范

规范 状态 备注
DOM
NodeIterator 的定义
现行的标准 添加了 referenceNodepointerBeforeReferenceNode 属性。
移除了 expandEntityReferences 属性。
方法 detach() 已更改为无任何操作。
方法 previousNode()nextNode() 不再引发异常。
Document Object Model (DOM) Level 2 Traversal and Range Specification
NodeIterator 的定义
已过时 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
feature_basicsupport1 支持3.5993
detach1123.5 — 22993
expandEntityReferences1123.5 — 21993
filter1123.5993
nextNode1123.5993
pointerBeforeReferenceNode1173.5 不支持 支持3
previousNode1123.5993
referenceNode1173.5 不支持 支持3
root1123.5993
whatToShow1123.5993

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
feature_basicsupport 支持 支持 未知4 未知10.13
detach 支持 支持 未知4 — 22 未知10.13
expandEntityReferences 支持 支持 未知4 — 21 未知10.13
filter 支持 支持 未知4 未知10.13
nextNode 支持 支持 未知4 未知10.13
pointerBeforeReferenceNode 支持 支持 未知4 未知 支持3
previousNode 支持 支持 未知4 未知10.13
referenceNode 支持 支持 未知4 未知 支持3
root 支持 支持 未知4 未知10.13
whatToShow 支持 支持 未知4 未知10.13

相关链接