
【JavaScript入門】DOM(Document Object Model)
JavaScriptを使ってWebページに動的な振る舞いを与える際には、ページの構造を理解し、要素を操作できる仕組みが欠かせません。この仕組みを支えているのがDOM(Document Object Model)です。DOMによって、HTMLで記述された文書構造はツリー状に表現され、JavaScriptから柔軟に要素を取得・変更・削除などの操作が可能となります。ここでは、DOMの概要と、HTMLがどのようにツリー構造として解釈されるかを解説し、簡単な例を通じてイメージをつかんでいただきます。

1.DOMとは
DOMは「Document Object Model」の略称で、Webページの文書構造をオブジェクトとしてツリー状に扱うためのモデルです。HTMLファイルに書かれた要素(<html>
, <head>
, <body>
など)は、それぞれJavaScriptのプログラムから参照・操作することができます。たとえば、ある見出し要素のテキストを変更したり、新しい段落を追加したりといった処理を、DOMを介して実現します。
2.サンプルHTMLファイル
以下に示すのは、ファイル名を「sample_dom.html」としたサンプルHTMLです。文書構造を簡単に示すため、見出しと本文、そしてフッターを含んだ最小限の内容としています。
sample_dom1.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>サンプルページ</title>
</head>
<body>
<header>
<h1>見出し</h1>
</header>
<section>
<article>
<p>ここに内容が入ります。</p>
</article>
</section>
<footer>
(C) サンプルページ
</footer>
</body>
</html>
このファイルでは、<header>
要素に見出し、<section>
と<article>
要素で本文を区切り、最後に<footer>
要素でフッターを配置しています。実際の開発では、これに加えてナビゲーションバーやサイドバーなど、さまざまな要素が加わる場合があります。
3.HTMLのツリー構造
ブラウザはHTMLファイルを読み込み、要素をツリー状に解釈します。上記のサンプルHTMLをツリー構造にすると、概ね次のようになります(インデントで階層を示しています)。
html
├── head
│ ├── meta
│ └── title
├── body
│ ├── header
│ │ └── h1
│ │ └── Text: 見出し
│ ├── section
│ │ └── article
│ │ └── p
│ │ └── Text: ここに内容が入ります。
│ └── footer
│ └── Text: (C) サンプルページ
それぞれのHTMLタグは「ノード」と呼ばれ、Text: ...
のように、テキスト部分も個別のノードとして扱われます。JavaScriptでDOM操作を行うときは、このツリー構造の中から対象ノードを取得し、プロパティを変更するなどの処理を行います。
4.DOM APIを利用した操作の例
JavaScriptのプログラムでは、DOM APIと呼ばれる命令群を通して、HTML要素を取得・変更・追加・削除などの操作を行います。以下は、ファイル名を「sample_dom2.html」とし、見出しを動的に書き換えるサンプルプログラムです。
sample_dom2.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>サンプルページ</title>
</head>
<body>
<header>
<h1>見出し</h1>
</header>
<section>
<article>
<p>ここに内容が入ります。</p>
</article>
<script>
// このプログラムは、HTMLドキュメントが読み込まれた後、見出しのテキストを変更します。
document.addEventListener('DOMContentLoaded', function () {
// h1要素を取得
const heading = document.querySelector('h1');
// テキストを「ようこそ、DOMへ!」に変更
heading.textContent = 'ようこそ、DOMへ!';
});
</script>
</section>
<footer>
(C) サンプルページ
</footer>
</body>
</html>
解説
document.addEventListener('DOMContentLoaded', ...)
は、HTMLの読み込みが完了してから処理を実行するためのイベントです。document.querySelector('h1')
は、ページ内の<h1>
要素を取得しています。heading.textContent = 'ようこそ、DOMへ!';
の部分で、見出しのテキストを変更しています。
このように、DOM APIを使うことで、ページ内の任意の要素にアクセスし、動的に内容を変化させることが可能です。
まとめ
DOMは、HTMLで定義された要素をツリー構造として表し、JavaScriptからアクセス・操作できるようにした仕組みです。ページの文書構造をしっかり理解しておくと、要素の取得や変更、追加・削除がスムーズに行えるようになります。
今後は、DOM APIの具体的な使い方やイベント処理などを組み合わせて、より複雑なインタラクションを実装していきましょう。