JavaScript01 : クリックで実現する基本的な動き

Webページでよく使われるクリックイベント(クリックをしたら)を活用して、Javascript 基本的な動きを学びましょう。ここでは以下の4つを作成します
- ボタンをクリックしたらメッセージを表示しよう
- クリックでボタンのテキストやスタイルを変更しよう
- ボタンをクリックして新しい要素を追加しよう
- ボタンをクリックするたびに背景色を変更しよう
メッセージを表示しよう
ボタンをクリックすると、「ボタンがクリックされました!」というアラートメッセージが表示されます。
See the Pen メッセージを表示しよう by Yoshiko Nakamura (@Yoshiko-Nakamura) on CodePen.
JavaScriptコード解説(全体)
// ボタンの要素を取得
const messageButton = document.getElementById("messageButton");
// クリック時の動作を設定
messageButton.addEventListener("click", () => {
alert("ボタンがクリックされました!");
});
まずボタンを取得する
const messageButton = document.getElementById("messageButton");
document.getElementById
- HTMLの中から、指定した
idを持つ要素を探して取得します。 - 今回は
id="messageButton"のボタンを取得しています。
const
- 変数(データを保存する箱のようなもの)を作ります。
- ここでは、取得したボタンを
messageButtonという名前で保存しています。
次にクリックしたときの動きを設定する
// クリック時の動作を設定
messageButton.addEventListener("click", () => {
alert("ボタンがクリックされました!");
});
addEventListener(“click”, …)
- ボタンに「クリックされたときの動作」を登録するための関数です。
- “click”は、クリックイベントを指定しています。他にも様々なイベントがあります。
addEventListenerとは?Webページ上の要素に特定の動作(イベント)を登録するためのJavaScriptの関数です。ボタンをクリックしたときにメッセージを表示したり、入力欄に文字を入力したときに何かが起こる動作を作ったり、ページをスクロールしたときに動きを追加する場面で使われます。イベントタイプは多く、click,mouseover,mouseout,input,load,resize,scroll,dragなどさまざま指定ができます。

クリックでボタンのテキストやスタイルを変更しよう
ボタンをクリックするたびに、そのボタンの内容とスタイルが変わります
See the Pen ボタンをクリックするたびにボタンが変わる by Yoshiko Nakamura (@Yoshiko-Nakamura) on CodePen.
JavaScriptコード解説(全体)
// ボタンの要素を取得
const toggleButton = document.getElementById("toggleButton");
// ボタンの状態を記録する変数
let isStyled = false;
// ボタンをクリックしたときの動作を設定
toggleButton.addEventListener("click", () => {
if (isStyled) {
toggleButton.textContent = "スタイルを変更";
toggleButton.style.backgroundColor = "";
toggleButton.style.color = "";
} else {
toggleButton.textContent = "元に戻す";
toggleButton.style.backgroundColor = "black";
toggleButton.style.color = "white";
}
isStyled = !isStyled; // 状態を反転させる
});
まずボタンの状態を記録する
let isStyled = false;
ボタンの現在の状態を記録するための変数です。初期状態はスタイルが変更されていない(false)とします。
次にクリック時の動作を設定する
toggleButton.addEventListener("click", () => {
// 動作の内容
});
ボタンがクリックされたときに実行する動作を設定します。
その中で条件分岐でスタイルを変更する
if (isStyled) {
toggleButton.textContent = "スタイルを変更";
toggleButton.style.backgroundColor = "";
toggleButton.style.color = "";
} else {
toggleButton.textContent = "元に戻す";
toggleButton.style.backgroundColor = "black";
toggleButton.style.color = "white";
}
isStyled = !isStyled;
if文- 現在の状態(
isStyled)に応じて、スタイルやテキストを切り替えます。
- 現在の状態(
textContent- textContent関数を使って、ボタンのテキストを変更します。
style.backgroundColorとstyle.color- CSSプロパティを直接変更します。
isStyled = !isStyled- 状態を反転させることで、次回クリック時に逆の動作をします。
styleプロパティについて
上記のコード内にある style.backgroundColor や style.color は、JavaScriptのstyleプロパティで、これは、CSSのプロパティをJavaScriptのコード内で直接変更・取得できます。
CSSとJavaScriptの違いは、JavaScriptではキャメルケース(小文字始まりで、単語の先頭が大文字)に変換されます。
| CSSプロパティ | JavaScriptプロパティ |
|---|---|
background-color | style.backgroundColor |
color | style.color |
font-size | style.fontSize |
margin-left | style.marginLeft |
border-radius | style.borderRadius |

ボタンをクリックして新しい要素を追加しよう
ボタンをクリックすると、ページに新しい1回目のクリックカウントが表示されます。
See the Pen 新しい要素を追加しよう by Yoshiko Nakamura (@Yoshiko-Nakamura) on CodePen.
JavaScriptコード解説(全体)
// ボタンの要素を取得
const addElementButton = document.getElementById("addElementButton");
// クリック回数をカウントする変数
let clickCount = 0;
// ボタンをクリックしたときの動作を設定
addElementButton.addEventListener("click", () => {
clickCount += 1; // クリック回数を1増やす
// 新しい段落要素を作成
const newElement = document.createElement("p");
newElement.textContent = `${clickCount}回目のクリックです!`;
// 作成した要素を画面に追加
const container = document.getElementById("container");
container.appendChild(newElement);
});
まずボタンを取得する
const addElementButton = document.getElementById("addElementButton");
document.getElementById
- HTMLから
id="addElementButton"の要素を取得します。
次にクリック回数をカウントする
let clickCount = 0;
let
変数を作成するためのキーワードで、後から値を変更する場合に使います。clickCountはその変数です。
ここでクリックイベントを設定する
addElementButton.addEventListener("click", () => {
clickCount += 1; // クリック回数を1増やす
});
clickCount += 1
現在のclickCountの値に複合演算子を使って、1を加えます。これによりクリック回数を記録します。
その場所に新しい要素を作成してテキストを設定する
const newElement = document.createElement("p");
newElement.textContent = `${clickCount}回目のクリックです!`;
document.createElement(“p”)
createElement関数を使って、新しい段落タグ(<p>)を作成します。
textContent
textContent関数を使って、段落に表示する内容を設定します。テンプレート文字列(バッククォート “)を使って、クリック回数を含むメッセージを設定しています。
最後に新しい要素を画面に追加する
const container = document.getElementById("container");
container.appendChild(newElement);
document.getElementById(“container”)
HTMLのid="container"を持つ要素(メッセージを追加する<div>)を取得します
appendChild(newElement)
新しい段落要素を<div>内に追加します。
ボタンをクリックするたびに背景色を変更しよう
ボタンをクリックするたびに、ページ全体の背景色がランダムに変わります。
See the Pen ランダムに背景色を変更しよう by Yoshiko Nakamura (@Yoshiko-Nakamura) on CodePen.
JavaScriptコード解説(全体)
// ボタンの要素を取得
const colorButton = document.getElementById("colorButton");
// クリック時の動作を設定
colorButton.addEventListener("click", () => {
// ランダムな色を生成
const randomColor = `#${Math.floor(Math.random() * 16777215).toString(16)}`;
// 背景色を変更
document.body.style.backgroundColor = randomColor;
});
クリックしたときの動きを設定する
colorButton.addEventListener("click", () => {
// ランダムな色を生成
const randomColor = `#${Math.floor(Math.random() * 16777215).toString(16)}`;
document.body.style.backgroundColor = randomColor;
});
addEventListener(“click”, function() { … })
- ボタンに「クリックされたときの動作」を登録します。
"click"は、クリックイベントを指定しています。
次にランダムな色を生成する
const randomColor = `#${Math.floor(Math.random() * 16777215).toString(16)}`;
Math.random()
- 0以上1未満のランダムな数値を生成します。
- 例えば、
0.123456や0.987654などの値が出てきます。
Math.floor()
- 小数点以下を切り捨てます。これによってランダムな整数を作れます。
16777215
- 16進数カラーコードで表現できる最大値(
#FFFFFF)です。これを基にランダムな色を作ります。
.toString(16)
- 数字を16進数の文字列に変換します。
- 例えば、10は
"a"、255は"ff"になります。
作成した背景色に変更する
document.body.style.backgroundColor = randomColor;
document.body
- ページ全体を指すオブジェクトで、body要素が変わります。
.style.backgroundColor
- ページのCSSプロパティ
background-colorを変更します。
randomColor
- ランダムに生成した16進数の変数に入っている色をここで適用しています。
他 ランダムではなく特定の色を設定したい場合は
colorButton.addEventListener("click", () => {
document.body.style.backgroundColor = "red";
});
他 ランダムではなくクリックごとに色を切り替える
クリックするたびに「青→緑→青→緑」と交互に切り替えるには、if文を使います。
let isBlue = false;
colorButton.addEventListener("click", () => {
if (isBlue) {
document.body.style.backgroundColor = "green";
} else {
document.body.style.backgroundColor = "blue";
}
isBlue = !isBlue;
});


