クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

JavaScript で DOM を変える

このレッスンのあとで: JavaScript で要素を選び、その文字やクラスを変えられる。

55分のレッスンコマンド1件フロントエンド Web ラボ:HTML、CSS、JavaScript をブラウザーでライブプレビュー

DOM はページの部品の木

DOM(ドム、ドキュメント・オブジェクト・モデル)は、ブラウザが HTML を読み込んで作る、ページの部品の木です。JavaScript は、この DOM の文字やクラスを書き換えて、ページを動かします。

学食のメニューで、料理の数を表示する例を使い、DOM を選んで変える方法を学びます。

このレッスンのゴール

メモ

JavaScript で要素を選び、その文字やクラスを変えられる。

重要な言葉

ことばいみれい
DOMブラウザが作る、ページの部品の木
querySelectorCSS のセレクタで、要素を1つ選ぶ命令document.querySelector("#count")
textContent要素の中の文字
classList要素のクラスを足したり外したりする道具
関数名前を付けた、何度も使える処理

学生が入力するセルは、このプレビューでは空白です。

JavaScript は DOM の要素を選ぶ

document.querySelector("#count") のように、CSS のセレクタで要素を1つ選べます。querySelectorAll は、当てはまる要素をすべて選びます。

選んだ要素は、変数に入れておくと、何度でも使えます。要素の文字は、textContent で読み書きします。

例: 料理の数を表示する

コード: web
<h2>今日の定食</h2>
<ul id="list">
  <li class="dish">焼き魚定食</li>
  <li class="dish">唐揚げ定食</li>
  <li class="dish">野菜カレー</li>
</ul>
<p id="count">料理の数: 0</p>

クラスを付け外しすると見た目が変わる

文字を書き換えるほかに、クラスを付けたり外したりして、CSS の規則を切り替える方法があります。

見た目を変えるときは、JavaScript から直接色を書かず、クラスを切り替えるのが基本です。規則は CSS に、切り替えは JavaScript に分けます。

例: classList の3つの命令

命令はたらき結果
add("hidden")クラスを付けるhidden が付く
remove("hidden")クラスを外すhidden がなくなる
toggle("hidden")あれば外し、なければ付ける付け外しが入れ替わる

学生が入力するセルは、このプレビューでは空白です。

練習: 料理を隠す

コード: web
<ul>
  <li class="dish">焼き魚定食</li>
  <li class="dish">唐揚げ定食</li>
</ul>

よくある間違い

注意

textContent に HTML のタグを書くと、タグとして働くと考える人がいます。textContent は、文字としてそのまま入れます。<b> と書けば、その文字が画面に出ます。

関数は処理に名前を付ける

同じ処理を何度も使うときは、関数にします。function のあとに名前と、波括弧で囲んだ処理を書きます。

関数は、呼ばれるまで動きません。呼ぶときは、名前のあとに丸括弧を付けます。

練習: 関数を呼ぶ

コード: web
<p id="msg"></p>

待ち受けは addEventListener で足す

addEventListener は、ある要素でイベントが起きたら、関数を呼ぶ、と登録する命令です。button.addEventListener("click", say) のように書きます。

1つのスクリプトに待ち受けがいくつあるかを数えると、そのページが何に反応するかが分かります。

例: クリックで関数を呼ぶ

コード: web
<button id="b">押す</button>
<p id="msg"></p>

ラボのスクリプトを読む

ラボのページの app.js を、スクリプトが読みます。関数の名前と、待ち受けるイベントと、id で探す要素を出します。

出る言葉は英語です。function は関数、listens for は待ち受けるイベント、looks up id は id で探す要素です。

スクリプトの中身を読む

コマンド
docker exec jupyter python3 steps/js.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

このラボとソースについて: フロントエンド Web ラボ:HTML、CSS、JavaScript をブラウザーでライブプレビュー

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。