【プログラミング初心者向け】DOMとは?DOMツリーも解説

DOMとは

DOM(Document Object Model)は、HTMLやXML文書をプログラムで操作するためのインターフェースです。 簡単に言えば、「HTMLの要素(例: <h1>タグや<p>タグ)をJavaScriptを通じて操作できるようにする仕組み」です。
HTMLとCSSだけでは、基本的に静的なWebページしか作成できません(例外として、hoverエフェクトなどは可能です)。 しかし、JavaScriptを使用することで、動きのあるインタラクティブなWebページを実現でき、その際にDOMの理解が重要になります。
また、DOMを扱ううえで欠かせない要素として「DOMツリー」という概念があります。 まずは、DOMを使って何ができるのかを簡単に説明した後に、DOMツリーがなぜ必要なのかを具体的に説明します。

DOMで何ができるのか

DOMを使うことで、JavaScriptから以下のようなことができます。

  • 要素を取得する
  • 内容を変更する
  • 要素を追加する
  • スタイルを変更する
  • イベントに反応する

以下は操作するHTMLのサンプルソースです。

<h1 id="main-title" class="main-title">ページのタイトル</h1>
<p class="text">文章です。</p>
<button class="button">クリックしてみてください</button>

DOMを操作することで、JavaScriptからHTMLの構造・内容・スタイル・動作を自由に制御することができます。
Webページに動きを加えたり、インタラクティブな機能を持たせたいときには、DOMの理解が欠かせません。
まずは基本的な取得・変更・追加・イベント処理から少しずつ慣れていきましょう。

要素を取得する

まずは、操作したい要素を「取得」する必要があります。

// IDで要素を取得
const mainTitle = document.getElementById('main-title');

// クラス名で要素を取得
const mainTitle = document.getElementsByClassName('main-title');

// CSSセレクタで要素を取得(最も柔軟な方法)
const mainTitle = document.querySelector('.main-title');

内容を変更する

// テキストを変更
const text = document.querySelector('.text');
text.textContent = 'DOMを操作しました!';

// HTMLを変更(HTMLタグも含める場合)
text[0].innerHTML = 'これは<strong>太字</strong>になります';

要素を追加する

//<p>タグを作成
const newPar = document.createElement('p');

//<p>タグの文章を作成
newPar.textContent = 'JavaScriptで追加した段落です';

// bodyの最後に追加
document.body.appendChild(newPar);

スタイルを変更する

const button = document.querySelector('.button');
button.style.backgroundColor = 'blue';
button.style.color = 'white';

イベントに反応する

const button = document.querySelector('.button');
button.addEventListener('click', function() {
alert('ボタンがクリックされました!');
});

DOMツリーとは

DOMツリーとは、HTMLの要素が互いにどのような関係にあるかを表した「木」のような構造のことです。
皆さんは家系図や会社の組織図を見たことがありますか?それと同じように、HTML要素同士の「親子関係」や「兄弟関係」を表したものがDOMツリーです。
例えば、次のような簡単なHTMLがあるとします。

<!DOCTYPE html>
<html>
<head>
<title>はじめてのDOM</title>
</head>
<body>
<h1>こんにちは!</h1>
<div>
<p>DOMを学んでいます</p>
<p>楽しいですね</p>
</div>
</body>
</html>

このHTMLをDOMツリーで表すと、このようになります:

document
└── html
├── head
│ └── title
│ └── "はじめてのDOM"(テキスト)
└── body
├── h1
│ └── "こんにちは!"(テキスト)
└── div
├── p
│ └── "DOMを学んでいます"(テキスト)
└── p
└── "楽しいですね"(テキスト)

この図を見ると、以下のような関係がわかります。

  • htmlはdocumentの子要素
  • headとbodyはhtmlの子要素で、互いに兄弟関係
  • h1とdivはbodyの子要素で、互いに兄弟関係
  • 2つのpタグはdivの子要素で、互いに兄弟関係

なぜDOMツリーが重要なの?

DOMツリーを理解すると、JavaScriptで要素を取得・操作するときに、どのように「移動」すればよいかがわかります。

例えば

// 親要素を取得する場合
const div要素 = document.querySelector('div');
const body要素 = div要素.parentNode; // divの親(body)を取得

// 子要素を取得
const div要素 = document.querySelector('div');
const 最初のp要素 = div要素.firstChild; // divの最初の子を取得
const すべての子要素 = div要素.children; // divのすべての子を取得

// 兄弟要素を取得
const h1要素 = document.querySelector('h1');
const div要素 = h1要素.nextElementSibling; // h1の次の兄弟(div)を取得

このように、要素間の「移動」ができるため、特定の要素から関連する要素を簡単に見つけられるのです。

DOMツリーをイメージするコツ

DOMツリーを理解するには、HTMLを「入れ子構造」で考えるとわかりやすいです。

  • 一番外側の<html>タグが大きな箱
  • その中に<head>と<body>という箱がある
  • <body>の中に<h1>と<div>という箱がある
  • <div>の中に2つの<p>という箱がある

この入れ子構造がそのままDOMツリーの親子関係になります。入れ子の同じ階層にある要素同士が「兄弟」です。

まとめ

DOMはウェブページをプログラムから操作するための重要な概念です。HTMLが「ページの構造」を定義するのに対し、DOMは「その構造へのアクセス方法」を提供します。
まずシンプルなHTMLを用意して、JavaScriptからいろいろな要素を操作する練習をすることです。
要素の取得、テキストの変更、スタイルの適用など、基本操作をマスターすれば、次第に複雑なウェブアプリケーションも作れるようになります。
DOMは最初は複雑に感じるかもしれませんが、少しずつ実践しながら理解を深めていきましょう。

まずは無料説明会・体験セミナー

テックドリームは無料のプログラミングスクールです。「プログラマってどういう仕事?」「自分にできるのかな?」という方も、まずは体験セミナーでプログラミングに触れてみませんか?テックドリームは未経験の方を丁寧にサポートする体制をご用意しています。不安なことや、入校までの疑問点なども気軽にご相談いただけます。

Webかんたん予約

専用の予約フォームより、およそ60秒で簡単にお申込みいただけます。

電話でのご予約

Webかんたん予約ができない場合や、ご質問がございましたら、お気軽にお電話ください。

0120-262-242
9:00~18:00(土日祝を除く)
最新情報をチェックしよう!
>テクド・リム

テクド・リム


「テクドリ」の公式キャラクター。
エンジニアだった父の影響を受けて、夢に向かって日々勉強に励むエンジニアのタマゴ。
夢は「世界を変える、すごいエンジニアになること!」

彼女が通うプログラミングスクールについては「テクドリとは」ページにて紹介中!

CTR IMG