TreeWalker

TreeWalker オブジェクトは、文書のサブツリーのノードおよびその位置を表します。

TreeWalkerdocument オブジェクトの Document.createTreeWalker() (en-US) メソッドを使用して作成可能です。

プロパティ

このインターフェイスが継承するプロパティはありません。

TreeWalker.root 読取専用

TreeWalker を作成したときに指定したルートノードを表す Node を返します。

TreeWalker.whatToShow (en-US) 読取専用

提供しなければならない Node の型を表す定数で構成されるビットマスクである unsigned long を返します。一致しないノードはスキップされますが、その子は関連があれば含まれます。使用できる値は以下のとおりです。

定数 数値 説明
NodeFilter.SHOW_ALL 4294967295 (unsigned long の最大値) すべてのノードを表示します。
NodeFilter.SHOW_ATTRIBUTE 非推奨 2 属性の Attr ノードを表示します。これはルートとして Attr を含む TreeWalker を作成する場合に限り、意味があります。この場合は、反復処理や走査処理の最初の位置に属性ノードが現れることを意味します。属性はほかのノードの子ではありませんので、文書ツリーを走査処理するときは出現しません。
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 ProcessingInstruction ノードを表示します。
NodeFilter.SHOW_TEXT 4 Text ノードを表示します。
TreeWalker.filter (en-US) 読取専用

関連するノードを選択するために使用した NodeFilter (en-US) を返します。

TreeWalker.currentNode (en-US)

TreeWalker の現在の位置の Node です。

メソッド

このインターフェイスが継承しているメソッドはありません。

メモ: TreeWalker のコンテキストでは、 whatToShowfilter 引数で決定される論理ビューにノードが存在する場合、ノードは可視状態となります。(ノードが画面上に表示されているかどうかは関係ありません)。

TreeWalker.parentNode() (en-US)

現在の Node を文書内の順序で最初の可視状態である祖先ノードに移動して、発見したノードを返します。また、現在のノードをこの位置に移動します。該当するノードがない、あるいはオブジェクト生成時に定義したルートノードより前にある場合は、null を返して現在のノードは変更しません。

TreeWalker.firstChild() (en-US)

現在の Node を現在のノードで最初の可視状態である子に移動して、発見した子ノードを返します。また、現在のノードをこの子ノードに移動します。該当する子がない場合は、null を返して現在のノードは変更しません。なお、 firstChild() が返すノードは、 TreeWalker オブジェクトのインスタンス化時に設定された whatToShow の値に依存することに注意してください。次のような HTML ツリーを想定して、 whatToShowNodeFilter.SHOW_ALL に設定して firstChild() を呼び出すと、HTMLDivElement オブジェクトではなく Text ノードが返されます。

html
<!DOCTYPE html>
<html>
  <head><title>Demo</title>
  <body>
    <div id="container"></div>
  </body>
</html>
js
let walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ALL);
let node = walker.firstChild(); // nodeName: "#text"

しかし、次のようにすることができます。

js
let walker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW_ELEMENT,
);
let node = walker.firstChild(); // nodeName: "DIV"

同じことが nextSibling(), previousSibling(), firstChild(), lastChild() でも言えます。

TreeWalker.lastChild() (en-US)

現在の Node を現在のノードで最後の可視状態である子に移動して、発見した子ノードを返します。また、現在のノードをこの子ノードに移動します。該当する子がない場合は、null を返して現在のノードは変更しません。

TreeWalker.previousSibling() (en-US)

現在の Node を前の兄弟に移動して、発見した兄弟ノードを返します。該当するノードがない場合は、 null を返して現在のノードは変更しません。

TreeWalker.nextSibling() (en-US)

現在の Node を次の兄弟に移動して、発見した兄弟ノードを返します。該当するノードがない場合は、 null を返して現在のノードは変更しません。

TreeWalker.previousNode() (en-US)

現在の Node を文書内の順序で前の可視状態であるノードに移動して、発見したノードを返します。また、現在のノードをこの位置に移動します。該当するノードがない、あるいはオブジェクト生成時に定義したルートノードより前にある場合は、null を返して現在のノードは変更しません。

TreeWalker.nextNode() (en-US)

現在の Node を文書内の順序で次の可視状態であるノードに移動して、発見したノードを返します。また、現在のノードをこの位置に移動します。該当するノードがない場合は、null を返して現在のノードは変更しません。

仕様書

Specification
DOM Standard
# interface-treewalker

ブラウザーの互換性

BCD tables only load in the browser

関連情報