Document.createNodeIterator()

新しい NodeIterator オブジェクトを返します。

構文

const nodeIterator = document.createNodeIterator(root[, whatToShow[, filter]]);

root

NodeIterator の探索の開始地点になるルートノードです。

whatToShow 省略可

オプションの unsigned long 値で、 NodeFilter の定数プロパティを組み合わせて作られたビットマスクを表します。これは特定の種類のノードを絞り込みするのに便利な方法です。. 既定値は 0xFFFFFFFF で、 SHOW_ALL 定数を表します。

定数 数値 説明
NodeFilter.SHOW_ALL -1 (すなわち unsigned 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 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 ノードが探索の最初の位置に現れることを意味します。 Notation は文書ツリーの一部ではないので、文書ツリーを探索しても表されません。
NodeFilter.SHOW_PROCESSING_INSTRUCTION 64 Shows ProcessingInstruction nodes.
NodeFilter.SHOW_TEXT 4 Text ノードを表します。
filter 省略可

NodeFilter インターフェースを実装したオブジェクト。その acceptNode() メソッドは、反復可能なノードのリストに含めるかどうかを決定するために、 whatToShow フラグによって含まれていると受け入れられたルートを基準としたサブツリーの各ノードに対して呼び出されます (代わりに単純なコールバック関数を使用することもできます)。このメソッドは NodeFilter.FILTER_ACCEPT, NodeFilter.FILTER_REJECT, or NodeFilter.FILTER_SKIP のいずれかを返します。を参照してください。

メモ: Gecko 12.0 (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9) より前の版では、このメソッドは DOM4 仕様の一部ではないオプションの 4 番目の引数 (entityReferenceExpansion) を受け入れていました。この引数は、エンティティ参照ノードの子がイテレーターから見えるかどうかを示していました。このようなノードはブラウザーでは作成されないので、この引数は何の効果もありませんでした。

js
const nodeIterator = document.createNodeIterator(
  document.body,
  NodeFilter.SHOW_ELEMENT,
  function (node) {
    return node.nodeName.toLowerCase() === "p"
      ? NodeFilter.FILTER_ACCEPT
      : NodeFilter.FILTER_REJECT;
  },
);
const pars = [];
let currentNode;

while ((currentNode = nodeIterator.nextNode())) {
  pars.push(currentNode);
}

仕様書

Specification
DOM Standard
# dom-document-createnodeiterator

ブラウザーの互換性

BCD tables only load in the browser