Day15:総合演習①の練習問題
ボタンクリックで文字を変更する仕組みは、DOM 操作の基礎をすべて含んだ「総合問題」です。
document.getElementById、textContent、イベント処理、状態管理など、Day14 までの内容をまとめて使います。
基本問題:ボタンを押したら文字を変える
問題1:ボタンを押したら id=”title” の文字を「変更されました」に書き換えてください
次の HTML を前提とします。
<h1 id="title">元のタイトル</h1>
<button id="btn">変更</button>
解答と解説
const titleElement = document.getElementById("title");
const btnElement = document.getElementById("btn");
btnElement.addEventListener("click", () => {
titleElement.textContent = "変更されました";
});
JavaScriptdocument.getElementById で要素を取得し、
addEventListener(“click”) で「クリックされたら実行する処理」を登録します。
textContent に代入することで、画面の文字が即座に変わります。
応用問題:押すたびに文字を切り替える(トグル)
問題2:ボタンを押すたびに「こんにちは」と「こんばんは」を切り替えてください
次の HTML を前提とします。
<h1 id="title">こんにちは</h1>
<button id="btn">切り替え</button>
解答と解説
const titleElement = document.getElementById("title");
const btnElement = document.getElementById("btn");
let isMorning = true;
btnElement.addEventListener("click", () => {
if (isMorning) {
titleElement.textContent = "こんばんは";
isMorning = false;
} else {
titleElement.textContent = "こんにちは";
isMorning = true;
}
});
JavaScriptここで重要なのは「状態を変数で持つ」ことです。
isMorning が true なら「こんにちは」、false なら「こんばんは」。
クリックのたびに isMorning を反転させることで、表示が切り替わります。
応用問題:状態と表示を関数で整理する
問題3:表示更新処理を updateTitle() 関数に切り出してください
次の仕様を満たしてください。
・isMorning が true なら「こんにちは」
・false なら「こんばんは」
・クリック時に isMorning を反転し、updateTitle() を呼ぶ
解答と解説
const titleElement = document.getElementById("title");
const btnElement = document.getElementById("btn");
let isMorning = true;
function updateTitle() {
if (isMorning) {
titleElement.textContent = "こんにちは";
} else {
titleElement.textContent = "こんばんは";
}
}
btnElement.addEventListener("click", () => {
isMorning = !isMorning;
updateTitle();
});
updateTitle();
JavaScript状態(isMorning)と表示処理(updateTitle)を分けることで、
コードが読みやすく、拡張しやすくなります。
これは実務でもよく使う「ロジックと表示の分離」です。
実務寄り問題:要素が見つからない場合の安全な処理
問題4:id のスペルミスなどで要素が取得できなかった場合、エラーメッセージを出してください
次の仕様を満たしてください。
・titleElement または btnElement が null の場合
・console.error でエラーを出す
・null でなければ通常の処理を行う
解答と解説
const titleElement = document.getElementById("title");
const btnElement = document.getElementById("btn");
if (!titleElement || !btnElement) {
console.error("必要な要素が見つかりません。id のスペルを確認してください。");
} else {
let isMorning = true;
btnElement.addEventListener("click", () => {
if (isMorning) {
titleElement.textContent = "こんばんは";
} else {
titleElement.textContent = "こんにちは";
}
isMorning = !isMorning;
});
}
JavaScriptDOM 操作では「要素が存在しない」ことがよくあります。
そのまま textContent に触るとエラーになるため、
安全性のために null チェックを入れるのは非常に重要です。
発展問題:ボタンの文字も切り替える
問題5:タイトルだけでなく、ボタンの文字も切り替えてください
仕様は次の通りです。
・タイトルが「こんにちは」のとき、ボタンは「こんばんはにする」
・タイトルが「こんばんは」のとき、ボタンは「こんにちはに戻す」
解答と解説
const titleElement = document.getElementById("title");
const btnElement = document.getElementById("btn");
let isMorning = true;
function updateView() {
if (isMorning) {
titleElement.textContent = "こんにちは";
btnElement.textContent = "こんばんはにする";
} else {
titleElement.textContent = "こんばんは";
btnElement.textContent = "こんにちはに戻す";
}
}
btnElement.addEventListener("click", () => {
isMorning = !isMorning;
updateView();
});
updateView();
JavaScriptタイトルとボタンの両方を「状態に応じて更新」しています。
このように「画面全体を状態から再構築する」考え方は、
React や Vue などのフレームワークにもつながる重要な概念です。
Day15 練習問題まとめ
Day15 の総合演習では、
document.getElementById
textContent
addEventListener
状態管理(変数)
条件分岐
関数化
といった DOM 操作の基礎をすべて使いました。
今回の練習問題で、
・ボタンクリックで文字を変える
・押すたびに切り替える
・状態を変数で管理する
・表示更新を関数にまとめる
・安全な DOM 操作(null チェック)
・ボタンの文字も動的に変える
といった「小さなアプリを自分で組み立てる力」が身につきました。

