JavaScript HTML DOM ナビゲーション

❮ 前章へ 次章へ ❯

HTML DOMを使用することで、ノードのリレーションシップを使用してノードツリーをナビゲートすることができます。


DOM ノード

W3C HTML DOM標準によると、HTML文書のすべてはノードです:

DOM HTML tree

HTML DOMを使用すると、JavaScriptによりノードツリー内のすべてのノードにアクセスができます。

新しいノードを作成し、すべてのノードを変更または削除をすることができます。


ノードのリレーションシップ

ノードツリー内のノードは、互いに階層関係にあります。

親、子、兄弟という用語は、関係を説明するために使われます。

<html>

  <head>
      <title>DOM Tutorial</title>
  </head>

  <body>
      <h1>DOM Lesson one</h1>
      <p>Hello world!</p>
  </body>

</html>
Node tree

上のHTMLから、次のことを読み取ることができます:

および:


ノード間の移動(ナビゲーション)

JavaScriptで使用してノード間を移動するために、次のノードプロパティが使用できます:


子ノードとノードの値

DOM 処理における一般的なエラーは、要素ノードにテキストが含まれていると考えていることです。

例:

<title id="demo">DOM Tutorial</title>

要素ノード(上の例では<title>)に、テキストは含まれません

それは、値 "DOM Tutorial" を持つテキストノードに含まれます。

テキストノードの値は、ノードの innerHTML プロパティでアクセスできます:

var myTitle = document.getElementById("demo").innerHTML;

innerHTMLプロパティへのアクセスは、最初の子のnodeValueへのアクセスと同じです:

var myTitle = document.getElementById("demo").firstChild.nodeValue;

最初の子へのアクセスは、次のように行うこともできます:

var myTitle = document.getElementById("demo").childNodes[0].nodeValue;

次の3つの例は、<h1>要素のテキストを取得し、<p>要素にコピーします:

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML;
</script>

</body>
</html>
Try it Yourself »

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>
Try it Yourself »

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02">Hello!</p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue;
</script>

</body>
</html>
Try it Yourself »

InnerHTML

このチュートリアルでは、innerHTMLプロパティを使用してHTML要素のコンテンツを取得します。

しかし、上記以外の方法を学ぶことは、ツリー構造とDOMのナビゲーションを理解するのに便利です。


DOM ルートノード

全てのドキュメントにアクセスができるようにする2つの特別なプロパティがあります:

<html>
<body>

<p>Hello World!</p>
<div>
<p>The DOM is very useful!</p>
<p>This example demonstrates the <b>document.body</b> property.</p>
</div>

<script>
alert(document.body.innerHTML);
</script>

</body>
</html>
Try it Yourself »

<html>
<body>

<p>Hello World!</p>
<div>
<p>The DOM is very useful!</p>
<p>This example demonstrates the <b>document.documentElement</b> property.</p>
</div>

<script>
alert(document.documentElement.innerHTML);
</script>

</body>
</html>
Try it Yourself »

nodeName プロパティ

nodeName ロパティーは、ノードの名前を指定します。

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName;
</script>
Try it Yourself »

注: nodeNameに含まれるHTML要素は、常に大文字のタグ名でます。


nodeValue プロパティ

nodeValue プロパティは、ノードの値を指定します。


nodeType プロパティ

nodeType プロパティはノードの型を返します。 nodeTypeは読み取り専用です。

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType;
</script>
Try it Yourself »

最も重要なノードタイプは次のとおりです:

要素タイプ ノードタイプ
要素 1
属性 2
テキスト 3
コメント 8
ドキュメント 9

❮ 前章へ 次章へ ❯