TreeWalker

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.

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

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

プロパティ

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

TreeWalker.root 読取専用

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

TreeWalker.whatToShow 読取専用

提供しなければならない 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 読取専用

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

TreeWalker.currentNode

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

メソッド

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

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

TreeWalker.parentNode()

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

TreeWalker.firstChild()

現在の 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()

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

TreeWalker.previousSibling()

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

TreeWalker.nextSibling()

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

TreeWalker.previousNode()

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

TreeWalker.nextNode()

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

仕様書

Specification
DOM Standard
# interface-treewalker

ブラウザーの互換性

BCD tables only load in the browser

関連情報