NodeIterator

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

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

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

属性

这个接口不继承任何属性。

NodeIterator.root (en-US) 只读
返回一个Node ,它代表创建 NodeIterator 时指定的根节点。
NodeIterator.whatToShow (en-US) 只读
返回一个无符号长整型,它是一个由描述必须呈现的Node类型的常量构成的位掩码。不匹配的节点被跳过,但是如果相关,他们的子节点可能被包括在内。可能的值是:
Constant Numerical value Description
NodeFilter.SHOW_ALL -1 (that is the max value of unsigned long) 显示所有节点。
NodeFilter.SHOW_ATTRIBUTE This is an obsolete API and is no longer guaranteed to work. 2 显示属性 Attr 节点. 只有当用一个 Attr 节点作为根节点来创建 NodeIterator 时才有意义; 在这种情况下, 这意味着属性节点会出现在迭代或遍历的首位. 因为属性永远不会是其它节点的子节点, 当遍历整个文档树时它们不会出现.
NodeFilter.SHOW_CDATA_SECTION This is an obsolete API and is no longer guaranteed to work. 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 This is an obsolete API and is no longer guaranteed to work. 32 显示 Entity 节点. 只有当用一个 Entity 节点作为它的根节点来创建一个 NodeIterator 时才有意义; 在这种情况下,  Entity 节点会出现在迭代或遍历的首位. 因为 Entity  永远不会是其它节点的子节点, 当遍历整个文档树时它们不会出现.
NodeFilter.SHOW_ENTITY_REFERENCE This is an obsolete API and is no longer guaranteed to work. 16 显示EntityReference 节点。
NodeFilter.SHOW_NOTATION This is an obsolete API and is no longer guaranteed to work. 2048 显示 Notation 节点. 只有当用一个 Notation 节点作为它的根节点时来创建一个 NodeIterator 才有意义; 在这种情况下,  Notation 节点会出现在迭代或遍历的首位. 因为 Notation  永远不会是其它节点的子节点, 当遍历整个文档树时它们不会出现.
NodeFilter.SHOW_PROCESSING_INSTRUCTION 64 显示ProcessingInstruction (en-US) 节点。
NodeFilter.SHOW_TEXT 4 显示Text 节点。
NodeIterator.filter (en-US) 只读
返回一个用来选择相关节点的 NodeFilter .
NodeIterator.expandEntityReferences 只读 Deprecated
Is a Boolean (en-US) indicating if, when discarding an EntityReference its whole sub-tree must be discarded at the same time.
NodeIterator.referenceNode (en-US) 只读 Experimental
返回当前遍历到的 Node .
NodeIterator.pointerBeforeReferenceNode (en-US) 只读 Experimental
Returns a Boolean (en-US) flag that indicates whether the NodeIterator is anchored before, the flag being true, or after, the flag being false, the anchor node.

方法

这个接口不会继承任何属性。

NodeIterator.detach() (en-US) This is an obsolete API and is no longer guaranteed to work.
这个方法不是必需的. 它现在什么也不做. 之前用来告诉引擎,NodeIterator 已经不会再使用,现在已经不做任何事情.
NodeIterator.previousNode() (en-US)
返回前一个 Node ,如果不存在则返回 null.
NodeIterator.nextNode() (en-US)
返回下一个 Node , 如果不存在则返回null .

特性

Specification Status Comment
DOM
NodeIterator
Living Standard Added the referenceNode and pointerBeforeReferenceNode properties.
Removed the expandEntityReferences property.
The method detach() has been changed to be a no-op.
The methods previousNode() and nextNode() don't raise an exception any more.
Document Object Model (DOM) Level 2 Traversal and Range Specification
NodeIterator
Obsolete Initial definition.

浏览器兼容性

BCD tables only load in the browser

扩展阅读