Node
はいくつもの DOM API オブジェクトタイプが継承しているインターフェイスで、それらのさまざまなタイプを同じように扱える (同じメソッドのセットを継承する、または同じ方法でテストできる) ようにします。
以下のインターフェイスはすべて、Node
からメソッドやプロパティを継承しています: Document
, Element
, Attr
, 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.isConnected
読取専用- ノードが(直接/関節的に)コンテキストオブジェクトに接続されているかを示す論理値。例えば通常の DOM の場合は
Document
オブジェクト、あるいはシャドーDOM の場合はShadowRoot
。 Node.lastChild
読取専用- ノードの直下の最後の子ノードを表す
Node
を返します。子が存在しなければnull
を返します。 Node.nextSibling
読取専用- ツリー構造で次のノードを表す
Node
を返します。該当するノードがない場合はnull
を返します。 Node.nodeName
読取専用Node
の名前を持つDOMString
を返します。名前の構造は、ノードの型によって異なります。例えば、HTMLElement
はHTMLAudioElement
に対して'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
を実行します。
引数
用例
次の例はボディの中のテキストの内容を 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 の定義 |
現行の標準 | 以下のプロパティを削除: attributes 、namespaceURI 、prefix 、localName 。以下のメソッドを削除: isSupported() 、hasAttributes() 、getFeature() 、setUserData() 、getUserData() 。 |
Document Object Model (DOM) Level 3 Core Specification Node の定義 |
廃止された | Document で insertBefore() 、replaceChild() 、removeChild() 、appendChild() メソッドを呼び出すと、もうひとつの種類のエラー (NOT_SUPPORTED_ERR ) を返します。normalize() メソッドを、適切な DOMConfiguration フラグが設定されていれば Text ノードも正規化できるように変更。以下のメソッドを追加: compareDocumentPosition() 、isSameNode() 、lookupPrefix() 、isDefaultNamespace() 、lookupNamespaceURI() 、isEqualNode() 、getFeature() 、setUserData() 、getUserData() 。以下のプロパティを追加: baseURI 、textContent 。 |
Document Object Model (DOM) Level 2 Core Specification Node の定義 |
廃止された | ownerDocument プロパティを、DocumentFragment が null も返すように若干変更。以下のプロパティを追加: namespaceURI 、prefix 、localName 。以下のメソッドを追加: normalize() 、isSupported() 、hasAttributes() 。 |
Document Object Model (DOM) Level 1 Specification Node の定義 |
廃止された | 初期定義 |
ブラウザー実装状況
BCD tables only load in the browser
機能 | 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) | ? | ? | ? |
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) | ? | ? | ? | 未サポート |
getRootNode() の追加と rootNode の非推奨化 |
未サポート | 54.0 | ? | 53.0 (53) | ? | 41 | ? | 54.0 |
[1] WebKit と古いバージョンの Blink は、誤って Node
が EventTarget
から継承していません。
[2] Gecko 22.0 (Firefox 22.0 / Thunderbird 22.0 / SeaMonkey 2.19) で、attributes
プロパティを Element
に移動しました。