JavaScriptでHTML要素を取得・変更する方法
前回の第9講ではDOMの仕組みについて学習しました。
HTMLはツリー構造になっており、JavaScriptから操作できることを学びました。
今回は実際にDOMを操作してみましょう。
この講義ではHTML要素を取得し、文字やHTMLの内容を書き換える方法を学習します。
この記事で学べること
- getElementById()の使い方
- querySelector()の使い方
- textContentの使い方
- innerHTMLの使い方
- DOM操作の基本的な流れ
DOM操作の基本的な流れ
DOM操作は次の3ステップで行います。
- HTML要素を取得する
- 取得した要素を変更する
- ブラウザへ反映する
まずは要素を取得しなければ変更できません。
そのためDOM操作では最初に「どの要素を操作するのか」を指定します。
documentとは?
DOM操作ではdocumentというオブジェクトが頻繁に登場します。
documentは現在表示されているHTML全体を表します。
document
└ html
└ body
├ h1
├ p
└ button
JavaScriptはdocumentを入口としてHTML要素へアクセスします。
今後のDOM操作では必ず利用するため覚えておきましょう。
getElementById()で要素を取得する
最も基本的な取得方法がgetElementById()です。
次のHTMLを用意します。
<h1 id="title">こんにちは</h1>
JavaScriptで取得します。
const title =
document.getElementById("title");
これでid属性がtitleの要素を取得できます。
構文
document.getElementById("id名");
括弧の中には取得したいid名を指定します。
ポイント
id名は完全一致で指定する必要があります。
スペルミスや大文字・小文字の違いに注意しましょう。
querySelector()で要素を取得する
実務で最も利用される取得方法がquerySelector()です。
querySelector()はidだけでなくclassやタグ名でも要素を取得できます。
id指定
document.querySelector("#title");
class指定
document.querySelector(".message");
タグ指定
document.querySelector("h1");
| 指定方法 | 意味 |
|---|---|
| #title | id指定 |
| .message | class指定 |
| h1 | タグ指定 |
柔軟に要素を取得できるため、実務ではquerySelector()を使う機会が多くなります。
textContentで文字を書き換える
取得した要素の文字を変更するにはtextContentを使用します。
次のHTMLを用意します。
<p id="message">こんにちは</p>
JavaScriptで変更します。
const message =
document.getElementById("message");
message.textContent =
"こんばんは";
実行結果は次のようになります。
<p id="message">こんばんは</p>
このようにtextContentは要素内の文字列を変更できます。
よくある利用例
- エラーメッセージ表示
- ログインユーザー名表示
- 検索件数表示
- 通知メッセージ表示
DOM操作の中でも特に利用頻度の高い機能です。
innerHTMLでHTMLを書き換える
HTMLタグごと変更したい場合はinnerHTMLを利用します。
<div id="box"></div>
JavaScriptを実行します。
document.getElementById("box").innerHTML =
"<h2>見出し</h2>";
結果は次のようになります。
<div id="box">
<h2>見出し</h2>
</div>
innerHTMLはHTMLタグを含めて挿入できます。
textContentとinnerHTMLの違い
| textContent | innerHTML |
|---|---|
| 文字として扱う | HTMLとして扱う |
textContentの場合
element.textContent =
"<strong>重要</strong>";
結果
重要
タグも文字として表示されます。
innerHTMLの場合
element.innerHTML =
"<strong>重要</strong>";
結果
重要
タグとして解釈されます。
演習問題
問題1
次のHTMLの文字を「JavaScript入門」に変更してください。
<h1 id="title">
JavaScript講座
</h1>
解答を見る
const title =
document.getElementById("title");
title.textContent =
"JavaScript入門";
問題2
次の要素へ見出しタグを追加してください。
<div id="box"></div>
解答を見る
document.getElementById("box").innerHTML =
"<h2>見出し</h2>";
よくある間違い
ID名のスペルミス
document.getElementById("titile");
存在しないidを指定すると取得できません。
要素取得前に変更する
title.textContent =
"変更";
先に要素を取得する必要があります。
まとめ
- documentはHTML全体を表す
- getElementById()でid指定できる
- querySelector()は柔軟に取得できる
- textContentは文字を変更する
- innerHTMLはHTMLを変更する
次回予告
第11講ではイベント処理を学びます。
ボタンをクリックしたら文字が変わる仕組みを作っていきましょう。

コメント