Document: createNodeIterator() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Document.createNodeIterator() メソッドは、新しい NodeIterator オブジェクトを返します。

構文

js
createNodeIterator(root)
createNodeIterator(root, whatToShow)
createNodeIterator(root, whatToShow, filter)

引数

root

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

whatToShow 省略可

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

定数 数値 説明
NodeFilter.SHOW_ALL 4294967295 (すなわち 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 古い値で、もう使用できません。
NodeFilter.SHOW_ENTITY_REFERENCE 非推奨; 16 古い値で、もう使用できません。
NodeFilter.SHOW_NOTATION 非推奨; 2048 古い値で、もう使用できません。
NodeFilter.SHOW_PROCESSING_INSTRUCTION 64 Shows ProcessingInstruction nodes.
NodeFilter.SHOW_TEXT 4 Text ノードを表します。
filter 省略可

コールバック関数または acceptNode() メソッドを持つオブジェクトです。この関数またはメソッドは、この関数またはメソッドは、サブツリー内の各ノードのうち whatToShow フラグで含まれると受け入れられたノードに対して呼び出され、反復可能オブジェクトのリストに記載するかどうかを決定します。このメソッドは NodeFilter.FILTER_ACCEPTNodeFilter.FILTER_REJECTNodeFilter.FILTER_SKIP のいずれかを返す必要があります。を参照してください。

返値

新しい NodeIterator オブジェクトです。

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

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

同じ動作ですが、acceptNode() メソッドを持つオブジェクトを使用しています。

js
const nodeIterator = document.createNodeIterator(
  document.body,
  NodeFilter.SHOW_ELEMENT,
  {
    acceptNode(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