.createTreeWalker()

Document.createTreeWalker()メソッドは、 新しく作成されたTreeWalkerオブジェクトを返します。

文法

treeWalker =
  document.createTreeWalker(root, whatToShow, filter, entityReferenceExpansion);
引数 説明
root このTreeWalkerトラバーサルの、 ルートのNodeを指定します。 一般的に、これはドキュメント(document)に保有されている要素になります。
whatToShow

(任意)
任意の符号なしロング型(unsigned long)のビットマスクで表す、 NodeFilterの定数プロパティを繋げることで作成されます。(翻訳に自信なし) これは特定のノードの型をフィルタリングするのに便利です。 デフォルトの0xFFFFFFFFは、SHOW_ALL定数を表します。

※このwhatToShowで使用される定数一覧については後述します。

filter (任意)
acceptNodeメソッドを持つ、NodeFilterオブジェクトを指定します。 このメソッドはTreeWalkerから、 whatToShowの判定に渡され、ノードを受けれいるか否かを決定するために呼び出されます。(翻訳に自信なし)
entityReferenceExpansion (Mozillaで未実装?)(任意)
Is a Boolean flag indicating if when discarding an EntityReference its whole sub-tree must be discarded at the same time.

whatToShowの定数

定数 数値 説明
NodeFilter.SHOW_ALL -1 (-1は符号なしロング型の最大値)
全てのノードを表示します。
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 Entityノードを表示します。 これは、そのルートとしてEntityノードでTreeWalkerを作成した場合にのみ有効で、 このケースではトラバーサルの最初の位置で表示される事を意味します。 エンティティはドキュメントツリーの一部では無いため、ドキュメントツリー上を巡っている時には現れません。
NodeFilter.SHOW_ENTITY_REFERENCE
(非推奨?)
16 EntityReferenceノードを表示します。
NodeFilter.SHOW_NOTATION
(非推奨?)
2048 Notationノードを表示します。 これは、そのルートとしてNotationノードでTreeWalkerを作成した場合にのみ有効で、 Notationノードはトラバーサルの最初の位置で表示されることを意味します。 エンティティはドキュメントツリーの一部では無いため、ドキュメントリーを巡る際には現れません。
NodeFilter.SHOW_PROCESSING_INSTRUCTION 64 ProcessingInstructionノードを表示します。
NodeFilter.SHOW_TEXT 4 Textノードを表示します。

下記の例は、body内の全てのノードを巡り、要素ノードのセットを取りまとめ、 各ノードは単純に受け入れ可能なもの(代わりにacceptNode()とすることも可)としてTreeWalkerを作成します。 このTreeWalkerは繰り返し処理でノード(ここでは全ての要素(Element))を進み、それを配列にpushします。(翻訳に自信なし)

var treeWalker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW_ELEMENT,
  { acceptNode: function(node) { return NodeFilter.FILTER_ACCEPT; } },
  false
);

var nodeList = [];

while(treeWalker.nextNode()) nodeList.push(treeWalker.currentNode);

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本 1.0 2.0 (1.8.1) 9.0 9.0 3.0
任意の引数
whatToShowとfilter
1.0 12 (12) × 3.0
モバイル
機能 Android Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本 1.0 (1.8.1) 9.0 3.0
任意の引数
whatToShowとfilter
12 (12) × 3.0

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。