【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