2日目のゴール
2日目のテーマも
「画面を書き換える」 ですが、今日は一歩進めて
自分が入力した文字を画面に出す
同じ場所の文字を、何度でも書き換える
「どのタイミングで」「どんな文字を」出すかを自分で決める
この感覚をつかむことがゴールです。
1日目は「決め打ちの文字」を出しました。
2日目は「ユーザーが入力した文字」を出します。
ここから一気に“アプリ感”が増します。
1日目の復習からスタートする
まずは「ボタンで文字が変わる」形を思い出す
1日目の完成形は、ざっくり言うとこうでした。
HTML に「表示する場所」と「ボタン」がある。
JavaScript でその要素をつかむ。
ボタンがクリックされたときに textContent を書き換える。
コードで書くと、こんな感じでした。
<p id="message">ここに文字が表示されます。</p>
<button id="changeButton">文字を変える</button>
const messageElement = document.getElementById("message");
const buttonElement = document.getElementById("changeButton");
buttonElement.addEventListener("click", function () {
messageElement.textContent = "ボタンが押されました!";
});
JavaScript今日は、この「書き換えの仕組み」はそのままにして、
「どんな文字を入れるか」を、入力欄から持ってくるようにします。
入力欄を追加してみる
HTML に input を足す
まずは HTML に「文字を入力する場所」を追加します。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>文字を表示するアプリ 2日目</title>
</head>
<body>
<h1>文字を表示するアプリ</h1>
<p>下の入力欄に文字を入れて、「表示する」ボタンを押してみましょう。</p>
<input id="textInput" type="text" placeholder="ここに文字を入力">
<button id="showButton">表示する</button>
<p id="message">ここに文字が表示されます。</p>
<script src="app.js"></script>
</body>
</html>
ここで新しく出てきたのは <input> です。
<input id="textInput" type="text" ...>
ここが「ユーザーが文字を入力する場所」です。id="textInput" をつけているので、JavaScript からつかめます。
<button id="showButton">表示する</button>
このボタンを押したときに、
入力欄の文字を <p id="message"> に表示します。
入力欄の「中身」を JavaScript から読む
value プロパティを覚える
1日目は「要素の中の文字」を textContent で扱いました。
2日目は「入力欄の中の文字」を value で扱います。
まずは app.js に、要素をつかむコードを書きます。
const messageElement = document.getElementById("message");
const inputElement = document.getElementById("textInput");
const showButtonElement = document.getElementById("showButton");
JavaScript次に、「ボタンが押されたとき」の処理を書きます。
showButtonElement.addEventListener("click", function () {
const text = inputElement.value;
messageElement.textContent = text;
});
JavaScriptここでの流れを、ゆっくり分解します。
inputElement.value
入力欄(input)の「中に入力されている文字」を表します。
ユーザーがキーボードで打った内容が、そのままここに入っています。
const text = inputElement.value;
その文字を text という変数にいったん入れています。
こうすることで、「今扱っているのは“入力された文字”だ」と意識しやすくなります。
messageElement.textContent = text;
1日目と同じように、表示用の <p> の文字を書き換えています。
ただし、今回は固定の文字ではなく、
さっき読み取った text をそのまま入れています。
結果として、
入力欄に「こんにちは」と打つ
「表示する」ボタンを押す
→ <p id="message"> に「こんにちは」と表示される
という動きになります。
入力後に入力欄をクリアしてみる
小さな「気配り」をコードにする
今のままでも動きとしては正しいですが、
ボタンを押したあとも入力欄に文字が残っています。
「表示したら入力欄は空にしたいな」と思ったら、
それも JavaScript で書けます。
showButtonElement.addEventListener("click", function () {
const text = inputElement.value;
messageElement.textContent = text;
inputElement.value = "";
});
JavaScriptinputElement.value = "";
これで「入力欄の中身を空文字にする」という意味になります。
こういう「ちょっとした気配り」を
コードで表現できるようになると、
アプリが一気に“自分のもの”になっていきます。
何も入力されていないときのメッセージ
条件分岐で「場合分け」する
次に、「何も入力されていないとき」の扱いを考えます。
今のコードだと、
空のままボタンを押すと、表示も空になります。
それでもいいのですが、
「何も入力されていません」と表示した方が親切です。
そこで、if 文を使って場合分けします。
showButtonElement.addEventListener("click", function () {
const text = inputElement.value;
if (text === "") {
messageElement.textContent = "何も入力されていません。文字を入力してください。";
} else {
messageElement.textContent = text;
}
inputElement.value = "";
});
JavaScriptここでのポイントは if (text === "") です。
text === ""
「text が空文字かどうか」をチェックしています。
入力欄に何も入っていないとき、value は空文字になります。
空だったら「何も入力されていません」と表示する。
空でなければ、そのまま表示する。
この「場合によって表示を変える」というのが、
アプリらしさの第一歩です。
2日目の app.js をまとめる
完成形をもう一度通して見る
2日目のゴールとして、app.js はこんな形になっていれば十分です。
// 表示する場所の要素をつかむ
const messageElement = document.getElementById("message");
// 入力欄の要素をつかむ
const inputElement = document.getElementById("textInput");
// ボタンの要素をつかむ
const showButtonElement = document.getElementById("showButton");
// ボタンがクリックされたときの動きを登録する
showButtonElement.addEventListener("click", function () {
// 入力欄の中身(文字)を取り出す
const text = inputElement.value;
// 何も入力されていない場合と、そうでない場合で分ける
if (text === "") {
messageElement.textContent = "何も入力されていません。文字を入力してください。";
} else {
// 入力された文字をそのまま表示する
messageElement.textContent = text;
}
// 入力欄を空にする(次の入力のため)
inputElement.value = "";
});
JavaScriptHTML はこうです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>文字を表示するアプリ 2日目</title>
</head>
<body>
<h1>文字を表示するアプリ</h1>
<p>下の入力欄に文字を入れて、「表示する」ボタンを押してみましょう。</p>
<input id="textInput" type="text" placeholder="ここに文字を入力">
<button id="showButton">表示する</button>
<p id="message">ここに文字が表示されます。</p>
<script src="app.js"></script>
</body>
</html>
これで、
自分で文字を入力する
ボタンを押す
→ 画面の文字がその内容に変わる
という「双方向のやりとり」が成立します。
重要ポイントを深掘りしておく
textContent と value の違い
2日目で絶対に整理しておきたいのは、この2つです。
要素.textContent
段落(p)、見出し(h1〜h6)、div など
「タグの中に書かれている文字」を扱うときに使う。
画面に“表示されている文字”そのもの。
input.value
入力欄(input)の中に「ユーザーが入力した文字」を扱うときに使う。
画面には枠として表示されていて、その中身が value。
どちらも「文字」ですが、
どこから取ってくるかが違います。
表示用の要素 → textContent
入力用の要素 → value
この対応がスッと出てくるようになると、
JavaScript で「画面と会話する」感覚が一気に楽になります。
もし余裕があればやってみてほしいこと
ちょっとしたアレンジで“自分のアプリ”にする
2日目の範囲だけでも、いろいろ遊べます。
入力した文字の前に「あなたの入力: 」をつけて表示する
空のときのメッセージを、自分の言葉に変えてみる
ボタンを押したときに、console.log でも入力内容を出してみる
例えば、こんな感じです。
if (text === "") {
messageElement.textContent = "何も入力されていません。";
} else {
messageElement.textContent = "あなたの入力: " + text;
}
JavaScriptやっていることは単純でも、
「自分の言葉で画面が反応する」だけで、
かなり楽しくなってきます。
2日目のまとめ
2日目で、あなたは
入力欄(input)を使う
value で入力された文字を取り出す
textContent で表示用の要素を書き換える
if 文で「空かどうか」を判定して表示を変える
という、「画面を書き換える」もう一段階先の形を手に入れました。
3日目以降は、
複数のボタンで違うメッセージを出したり、
入力内容を少し加工してから表示したりと、
“アプリらしさ”をさらに足していきます。

