【JavaScript / DOM】ノードの基本情報- プロパティ(nodeType、nodeName、nodeValue、innerHTML、outerHTMLなど)
JavaScript/DOMの『ノードの基本情報』について解説します。
検証環境
ノードの基本情報
ノードには様々なプロパティがあります。
種類を表すnodeTypeやノードのテキストを表すtextContentなどです。
このドキュメントではノードの基本情報を持つプロパティについて解説します。
種類(nodeType)
nodeTypeプロパティはノードの種類を表します。
プロパティは数値になっており、各数値は次の種類に対応しています。
| 数値 | 種類 |
|---|---|
| 1 | 要素ノード |
| 2 | 属性ノード |
| 3 | テキストノード |
| 8 | コメントノード |
| 9 | ドキュメントノード |
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let box = document.getElementById("box");
console.log(box.childNodes);
// 要素ノード
let element = box.childNodes[3];
console.log(element.nodeType, element);
// 属性ノード
let attr = box.attributes[0];
console.log(attr.nodeType, attr);
// テキストノード
let text = box.childNodes[4];
console.log(text.nodeType, text);
// コメントノード
let comment = box.childNodes[1];
console.log(comment.nodeType, comment);
// ドキュメントノード
console.log(document.nodeType, document);
</script>
NodeList(5) [text, comment, text, p, text]
1 <p>JavaScriptはプログラミング言語の1つです。</p>
2 id="box"
3 " 主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。 "
8 <!-- JavaScriptの概要 -->
9 #document
ノード名(nodeName)
nodeNameプロパティはノード名を表します。
ノードの種類によってノード名は異なります。
| 種類 | 名前 |
|---|---|
| 要素ノード | タグ名 |
| 属性ノード | 属性名 |
| テキストノード | #text |
| コメントノード | #comment |
| ドキュメントノード | #document |
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let box = document.getElementById("box");
console.log(box.childNodes);
// 要素ノード
let element = box.childNodes[3];
console.log(element.nodeName, element);
// 属性ノード
let attr = box.attributes[0];
console.log(attr.nodeName, attr);
// テキストノード
let text = box.childNodes[4];
console.log(text.nodeName, text);
// コメントノード
let comment = box.childNodes[1];
console.log(comment.nodeName, comment);
// ドキュメントノード
console.log(document.nodeName, document);
</script>
NodeList(5) [text, comment, text, p, text]
P <p>JavaScriptはプログラミング言語の1つです。</p>
id id="box"
#text " 主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。 "
#comment <!-- JavaScriptの概要 -->
#document #document
値(nodeValue)
nodeValueプロパティはノードの値を表します。
ノードの種類によってノードの値が意味するモノが異なります。
| 種類 | 名前 |
|---|---|
| 要素ノード | null |
| 属性ノード | 属性値 |
| テキストノード | テキスト |
| コメントノード | コメントテキスト |
| ドキュメントノード | null |
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let box = document.getElementById("box");
console.log(box.childNodes);
// 要素ノード
let element = box.childNodes[3];
console.log(element.nodeValue, element);
// 属性ノード
let attr = box.attributes[0];
console.log(attr.nodeValue, attr);
// テキストノード
let text = box.childNodes[4];
console.log(text.nodeValue, text);
// コメントノード
let comment = box.childNodes[1];
console.log(comment.nodeValue, comment);
// ドキュメントノード
console.log(document.nodeValue, document);
</script>
NodeList(5) [text, comment, text, p, text]
null <p>JavaScriptはプログラミング言語の1つです。</p>
box id="box"
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。 " 主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。 "
JavaScriptの概要 <!-- JavaScriptの概要 -->
null #document
テキスト(textContent)
textContentプロパティはノードのテキスト値を表します。
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let box = document.getElementById("box");
console.log(box.childNodes);
// 要素ノード
let element = box.childNodes[3];
console.log(element.textContent, element);
// 属性ノード
let attr = box.attributes[0];
console.log(attr.textContent, attr);
// テキストノード
let text = box.childNodes[4];
console.log(text.textContent, text);
// コメントノード
let comment = box.childNodes[1];
console.log(comment.textContent, comment);
// ドキュメントノード
console.log(document.textContent, document);
</script>
NodeList(5) [text, comment, text, p, text]
JavaScriptはプログラミング言語の1つです。 <p>JavaScriptはプログラミング言語の1つです。</p>
box id="box"
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。 " 主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。 "
JavaScriptの概要 <!-- JavaScriptの概要 -->
null #document
基本的にはnodeValueと同様の値が取得できますが、要素ノードは子孫ノード(下階層のノード)のテキスト(改行やインデント等)も含みます。
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let box = document.getElementById("box");
console.log(box.nodeValue);
console.log(box.textContent);
</script>
null
JavaScriptはプログラミング言語の1つです。
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
レンダリングテキスト(innerText)
innerTextプロパティはノードのレンダリングテキストを表します。
※ レンダリングテキストはブラウザに表示されるテキストです。
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let box = document.getElementById("box");
console.log(box.childNodes);
// 要素ノード
let element = box.childNodes[3];
console.log(element.innerText, element);
// 属性ノード
let attr = box.attributes[0];
console.log(attr.innerText, attr);
// テキストノード
let text = box.childNodes[4];
console.log(text.innerText, text);
// コメントノード
let comment = box.childNodes[1];
console.log(comment.innerText, comment);
// ドキュメントノード
console.log(document.innerText, document);
</script>
NodeList(5) [text, comment, text, p, text]
JavaScriptはプログラミング言語の1つです。 <p>JavaScriptはプログラミング言語の1つです。</p>
undefined id="box"
undefined " 主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。 "
undefined <!-- JavaScriptの概要 -->
undefined #document
ノード内のHTMLドキュメント(innerHTML)
innerHTMLプロパティはノード内のHTMLドキュメントを表します。
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let box = document.getElementById("box");
console.log(box.childNodes);
// 要素ノード
let element = box.childNodes[3];
console.log(element.innerHTML, element);
// 属性ノード
let attr = box.attributes[0];
console.log(attr.innerHTML, attr);
// テキストノード
let text = box.childNodes[4];
console.log(text.innerHTML, text);
// コメントノード
let comment = box.childNodes[1];
console.log(comment.innerHTML, comment);
// ドキュメントノード
console.log(document.innerHTML, document);
</script>
NodeList(5) [text, comment, text, p, text]
JavaScriptはプログラミング言語の1つです。 <p>JavaScriptはプログラミング言語の1つです。</p>
undefined id="box"
undefined " 主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。 "
undefined <!-- JavaScriptの概要 -->
undefined #document
上記サンプルではinnerTextプロパティと同様の値に見えますが、div要素(id属性値がbox)のinnerHTML要素で比較すると違いが分かります。
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let box = document.getElementById("box");
console.log(box.innerText);
console.log(box.innerHTML);
</script>
JavaScriptはプログラミング言語の1つです。
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
innerTextはレンダリングテキストのみに対し、innerHTMLはタグ要素やコメントも含んでいます。
ノードを含むHTMLドキュメント(outerHTML)
outerHTMLプロパティはノード自身を含むHTMLドキュメントを表します。
<div id="box">
<!-- JavaScriptの概要 -->
<p>JavaScriptはプログラミング言語の1つです。</p>
主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。
</div>
<script type="text/javascript">
let box = document.getElementById("box");
console.log(box.childNodes);
// 要素ノード
let element = box.childNodes[3];
console.log(element.outerHTML, element);
// 属性ノード
let attr = box.attributes[0];
console.log(attr.outerHTML, attr);
// テキストノード
let text = box.childNodes[4];
console.log(text.outerHTML, text);
// コメントノード
let comment = box.childNodes[1];
console.log(comment.outerHTML, comment);
// ドキュメントノード
console.log(document.outerHTML, document);
</script>
NodeList(5) [text, comment, text, p, text]
<p>JavaScriptはプログラミング言語の1つです。</p> <p>JavaScriptはプログラミング言語の1つです。</p>
undefined id="box"
undefined " 主にブラウザの動的処理に使われますが、サーバーやアプリでも活躍します。 "
undefined <!-- JavaScriptの概要 -->
undefined #document