MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Node はいくつもの DOM API オブジェクトタイプが継承しているインターフェイスで、それらのさまざまなタイプを同じように扱える (同じメソッドのセットを継承する、または同じ方法でテストできる) ようにします。

以下のインターフェイスはすべて、Node からメソッドやプロパティを継承しています: Document, Element, CharacterData (which Text, Comment, and CDATASection inherit), ProcessingInstruction, DocumentFragment, DocumentType, Notation, Entity, EntityReference

これらのインターフェイスは、そのメソッドやプロパティが妥当でないときは null を返すことがあります。例外を投げることもあります - 例えば、子が存在できないノードタイプに子を追加するとき。

プロパティ

親である EventTarget からプロパティを継承します。[1]

Node.baseURI 読取専用
ベース URL を表す DOMString を返します。ベース URL の概念は、言語によって変わります。HTML ではプロトコル、ドメイン名、ディレクトリー構造に対応しており、最後の '/' までのすべてになります。
Node.baseURIObject
(ウェブコンテンツでは使用できません) 要素のベース URI を表す、読み取り専用の nsIURI オブジェクトを返します。
Node.childNodes 読取専用
このノードのすべての子孫を含む、生きている NodeList を返します。NodeList が生きているとは、Node の子が変化すれば自動的に NodeList オブジェクトが更新されることを意味します。
Node.firstChild 読取専用
ノードの直下の最初の子ノードを表す Node を返します。子が存在しなければ null を返します。
Node.lastChild 読取専用
ノードの直下の最後の子ノードを表す Node を返します。子が存在しなければ null を返します。
Node.nextSibling 読取専用
ツリー構造で次のノードを表す Node を返します。該当するノードがない場合は null を返します。
Node.nodeName 読取専用
Node の名前を持つ DOMString を返します。名前の構造は、ノードの型によって異なります。例えば、HTMLElementHTMLAudioElement に対して 'audio' というように対応するタグの名前、Text ノードは '#text' という文字列、Document ノードは '#document' という文字列になります。
Node.nodePrincipal
ノードのプリンシパルを表す nsIPrincipal を返します。
Node.nodeType読取専用
ノードの型を表す unsigned short を返します。使用できる値:
名称
ELEMENT_NODE 1
ATTRIBUTE_NODE 2
TEXT_NODE 3
CDATA_SECTION_NODE 4
ENTITY_REFERENCE_NODE 5
ENTITY_NODE 6
PROCESSING_INSTRUCTION_NODE 7
COMMENT_NODE 8
DOCUMENT_NODE 9
DOCUMENT_TYPE_NODE 10
DOCUMENT_FRAGMENT_NODE 11
NOTATION_NODE 12
Node.nodeValue
カレントノードの値を取得または設定します。
Node.ownerDocument 読取専用
ノードが所属する Document を返します。ノードに関連つけられた document がない場合は、null を返します。
Node.parentNode 読取専用
このノードの親の Node を返します。ノードがツリーの最上位である、あるいはツリーに加わっていないなど、親が存在しない場合は null を返します。
Node.parentElement 読取専用
このノードの親の Element を返します。ノードに親が存在しない、あるいは親が Element ではない場合は、null を返します。
Node.previousSibling 読取専用
ツリー構造で前のノードを表す Node を返します。該当するノードがない場合は null を返します。
Node.textContent
要素や要素のすべての子孫のテキストコンテンツを取得または設定します。

非推奨プロパティ

Node.rootNode 読取専用
ツリーの最上位ノードを表す Node オブジェクトを返します。自身がツリーの最上位ノードである場合はカレントノードを返します。これは Node.getRootNode() に置き換えられました。

廃止プロパティ

Node.localName 読取専用
要素の修飾名のローカル部分を表す DOMString を返します。

注記: Firefox 3.5 および以前のバージョンでは、このプロパティで HTML 要素のローカル名が大文字でした (XHTML 要素を除く)。以降のバージョンではこのようになりませんので、このプロパティでは HTML および XHTML の両方が小文字になります。

Node.namespaceURI 読取専用
ノードの名前空間の URI。名前空間がない場合は null になります。

注記: Firefox 3.5 および以前のバージョンでは、HTML 要素の名前空間はありません。以降のバージョンでは、HTML 要素は HTML ツリーおよび XML ツリーで https://www.w3.org/1999/xhtml/ 名前空間内に存在します。

Node.prefix 読取専用
ノードの名前空間の接頭辞を表す DOMString を返します。接頭辞が指定されていない場合は null を返します。

メソッド

親である EventTarget からメソッドを継承します。[1]

Node.appendChild()
カレントノードの最後の子として、指定した childNode 引数を追加します。
引数が DOM ツリー上の既存のノードを参照している場合は、ノードが現在の位置から外されて新しい位置に追加されます。
Node.cloneNode()
Node を複製します。また、すべての内容物を複製することもできます。デフォルトで、ノードの内容物を複製します。
Node.compareDocumentPosition()
カレントノードの位置を、他のドキュメント内の別のノードと比較します。
Node.contains()
ノードが指定したノードの子孫であるか否かを示す Boolean 値を返します。
Node.getRootNode()
コンテキストオブジェクトのルートを返します。任意で、shadow root が使用可能である場合にそれを含めることができます。
Node.hasChildNodes()
要素が子ノードを持っているか否かを示す Boolean を返します。
Node.insertBefore()
カレントノードの子として、参照先ノードの前に Node を挿入します。
Node.isDefaultNamespace()
引数として名前空間の URI を受け入れて、名前空間が指定したノードのデフォルトの名前空間であれば true、そうでない場合は false である Boolean を返します。
Node.isEqualNode()
2 つのノードが同じ型であり、定義されているすべてのデータポイントが一致するか否かを表す Booleanを返します。
Node.isSameNode()
2 つのノードが同じである (すなわち、同じオブジェクトを参照している) か否かを示す Boolean 値を返します。
Node.lookupPrefix()
指定した名前空間 URI の接頭辞があれば、その接頭辞を含む DOMString を返します。接頭辞がない場合は null を返します。複数の接頭辞がある場合の結果は実装依存です。
Node.lookupNamespaceURI()
接頭辞を受け入れて、指定したノードで接頭辞が関連付けられた名前空間が見つかった場合は名前空間の URI を返します (見つからない場合は null を返します)。接頭辞として null を与えると、デフォルトの名前空間を返します。
Node.normalize()
要素内のすべてのテキストノードをクリーンアップ (隣接ノードを統合、空のノードを削除) します。
Node.removeChild()
カレント要素から子ノードを削除します。カレント要素はカレントノードの子であることが必要です。
Node.replaceChild()
カレントノードの子 Node のひとつを、引数で指定した別のノードで置き換えます。

廃止メソッド

Node.getFeature()
x
Node.getUserData()
ユーザーが、ノードから DOMUserData を取得できます。
Node.hasAttributes()
要素がなんらかの属性を持っているか否かを示す Boolean を返します。
Node.isSupported()
DOM 実装が特定の機能を実装しており、またその機能が指定したノードでサポートされているかを確認して、その結果を表す Boolean を返します。
Node.setUserData()
ユーザーが、ノードに DOMUserData を追加または削除できます。

すべての子ノードを走査する

次の関数はすべての子ノードを再帰的にループして、それらに対してコールバック関数を呼び出します。(また、親ノード自身に対しても同様に呼び出されます。

function DOMComb (oParent, oCallback) {
  if (oParent.hasChildNodes()) {
    for (var oNode = oParent.firstChild; oNode; oNode = oNode.nextSibling) {
      DOMComb(oNode, oCallback);
    }
  }
  oCallback.call(oParent);
}

構文

DOMComb(parentNode, callbackFunction);

説明

parentNode のすべての子ノードと parentNode 自身を再帰的にループして、それらを this オブジェクトとして callbackFunction を実行します。

引数

parentNode
親ノード (Node Object)
callbackFunction
コールバック関数 (Function)

用例

次の例はボディの中のテキストの内容を console.log に送るものです:

function printContent () {
  if (this.nodeValue) { console.log(this.nodeValue); }
}

onload = function () {
  DOMComb(document.body, printContent);
};

ノードに内包されているすべての子ノードを削除する

Element.prototype.removeAll = function () {
  while (this.firstChild) { this.removeChild(this.firstChild); }
  return this;
};

使用例

/* ... an alternative to document.body.innerHTML = "" ... */
document.body.removeAll();

仕様

仕様書 策定状況 コメント
DOM
Node の定義
現行の標準 以下のプロパティを削除: attributesnamespaceURIprefixlocalName
以下のメソッドを削除: isSupported()hasAttributes()getFeature()setUserData()getUserData()
Document Object Model (DOM) Level 3 Core Specification
Node の定義
勧告 DocumentinsertBefore()replaceChild()removeChild()appendChild() メソッドを呼び出すと、もうひとつの種類のエラー (NOT_SUPPORTED_ERR) を返します。
normalize() メソッドを、適切な DOMConfiguration フラグが設定されていれば Text ノードも正規化できるように変更。
以下のメソッドを追加: compareDocumentPosition()isSameNode()lookupPrefix()isDefaultNamespace()lookupNamespaceURI()isEqualNode()getFeature()setUserData()getUserData()
以下のプロパティを追加: baseURItextContent
Document Object Model (DOM) Level 2 Core Specification
Node の定義
勧告 ownerDocument プロパティを、DocumentFragmentnull も返すように若干変更。
以下のプロパティを追加: namespaceURIprefixlocalName
以下のメソッドを追加: normalize()isSupported()hasAttributes()
Document Object Model (DOM) Level 1 Specification
Node の定義
勧告 初期定義

ブラウザー実装状況

機能 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有)[1] (有) 1.0 (1.7 or earlier) (有) (有)[1] (有)[1]
getFeature() 未サポート ? 1.0 (1.7 or earlier)
未サポート7.0 (7.0)
? 未サポート 未サポート
getUserData()setUserData()hasAttributes() 未サポート ? 1.0 (1.7 or earlier)
未サポート22.0 (22.0)
? 未サポート 未サポート
isSameNode() (有) ? 1.0 (1.7 or earlier)
10 (10) で削除
48 (48) で再追加
? 未サポート 未サポート
isSupported() 未サポート ? 1.0 (1.7 or earlier) ? ? ?
attributes 未サポート ? 1.0 (1.7 or earlier)
未サポート22.0 (22.0)[2]
未サポート 未サポート 未サポート
rootNode() ? ? 48 (48) ? ? ?
namespaceURIlocalNameprefix (有)
未サポート46.0[3]
? (有)
未サポート48.0[3]
? ? ?
getRootNode() の追加と rootNode の非推奨化 54.0 ? 53 (53) ? 41 ?
機能 Android Android Webview Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Android 版 Chrome
基本サポート ? (有)[1] (有) 1.0 (1.0) (有) (有)[1] (有)[1] (有)[1]
getFeature() 未サポート 未サポート ? 1.0 (1.0)
未サポート7.0 (7.0)
? 未サポート 未サポート 未サポート
getUserData()setUserData()hasAttributes() 未サポート 未サポート ? ? ? ? ? 未サポート
isSameNode() ? (有) ? 1.0 (1.7 or earlier)
10 (10) で削除
48 (48) で再追加
? ? ? (有)
isSupported() ? 未サポート ? ? ? ? ? 未サポート
attributes ? 未サポート ? ? ? ? ? 未サポート
rootNode() ? 未サポート ? 48.0 (48) ? ? ? 未サポート
namespaceURIlocalNameprefix ? 未サポート ? (有)
未サポート48.0[3]
? ? ? 未サポート
getRootNode() の追加と rootNode の非推奨化 未サポート 54.0 ? 53.0 (53) ? 41 ? 54.0

[1] WebKit と古いバージョンの Blink は、誤って NodeEventTarget から継承していません。

[2] Gecko 22.0 (Firefox 22.0 / Thunderbird 22.0 / SeaMonkey 2.19) で、attributes プロパティを Element に移動しました。

[3] DOM4 標準に従って、プロパティを Element および Attr API に移動しました。

ドキュメントのタグと貢献者

 このページの貢献者: yyss, MakeNowJust, cohei, khalid32, ethertank, RobinEgg
 最終更新者: yyss,