Document: createNodeIterator() メソッド
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
Document.createNodeIterator() メソッドは、新しい NodeIterator オブジェクトを返します。
構文
js
createNodeIterator(root)
createNodeIterator(root, whatToShow)
createNodeIterator(root, whatToShow, filter)
引数
root-
NodeIteratorの探索の開始地点になるルートノードです。 whatToShow省略可-
オプションの
unsigned long値で、NodeFilterの定数プロパティを組み合わせて作られたビットマスクを表します。 これは特定の種類のノードを絞り込みするのに便利な方法です。既定値は0xFFFFFFFFで、SHOW_ALL定数を表します。定数 数値 説明 NodeFilter.SHOW_ALL4294967295(すなわちunsigned longの最大値)すべてのノードを表します。 NodeFilter.SHOW_ATTRIBUTE2属性 Attrノードを表します。これは、AttrノードをルートとしてNodeIteratorを作成した場合にのみ意味を持ちます。この場合、その属性ノードが反復や探索の最初の位置に現れることを意味します。属性は他のノードの子ではないので、文書ツリーを探索しても現れません。NodeFilter.SHOW_CDATA_SECTION8CDATASectionノードを表します。NodeFilter.SHOW_COMMENT128Commentノードを表します。NodeFilter.SHOW_DOCUMENT256Documentノードを表します。NodeFilter.SHOW_DOCUMENT_FRAGMENT1024DocumentFragmentノードを表します。NodeFilter.SHOW_DOCUMENT_TYPE512DocumentTypeノードを表します。NodeFilter.SHOW_ELEMENT1Elementノードを表します。NodeFilter.SHOW_ENTITY32古い値で、もう使用できません。 NodeFilter.SHOW_ENTITY_REFERENCE16古い値で、もう使用できません。 NodeFilter.SHOW_NOTATION2048古い値で、もう使用できません。 NodeFilter.SHOW_PROCESSING_INSTRUCTION64Shows ProcessingInstructionnodes.NodeFilter.SHOW_TEXT4Textノードを表します。 filter省略可-
コールバック関数または
acceptNode()メソッドを持つオブジェクトです。この関数またはメソッドは、この関数またはメソッドは、サブツリー内の各ノードのうち whatToShow フラグで含まれると受け入れられたノードに対して呼び出され、反復可能オブジェクトのリストに記載するかどうかを決定します。このメソッドはNodeFilter.FILTER_ACCEPT、NodeFilter.FILTER_REJECT、NodeFilter.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);
}
仕様書
| 仕様書 |
|---|
| DOM> # dom-document-createnodeiterator> |