【初心者向け】JavaScriptでボタンをクリックしてイベントを実行しよう!

JavaScript基礎

イベント(event)とは、「ユーザーが何か操作したときに起きる出来事」のことです。
たとえば、次のような操作はすべて「イベント」です

  • ボタンをクリックする
  • キーボードを押す
  • マウスを動かす
  • 画面が読み込まれる
  • 入力フォームに文字を入れる

イベントを使うと何ができるの?

JavaScriptでは、イベントが起きたタイミングで関数を実行することができます。
つまり「クリックされたら何かを表示する」「キーを押したら何かが起きる」といったインタラクティブな動きを作れるんです。

例:クリックイベントのイメージ

ボタンをクリックしたときにメッセージを表示する処理は、こんな感じで書けます

document.getElementById("myButton").addEventListener("click", function() {
  alert("ボタンがクリックされました!");
});

ここで重要なのは、「click というイベントが起きたときに、関数が実行される」という点です。
このしくみを使って、動くWebページを作っていくことができます。

次のセクションでは、実際にHTMLとJavaScriptを使ってクリックイベントを実装してみましょう!

イベントの中でも最もよく使われるのが「クリックイベント」です。
ここでは、HTMLのボタンをクリックしたときに、JavaScriptで処理を実行する方法を学びます。

HTMLでボタンを用意しよう

まずは、HTMLでボタンを1つ用意します。

<button id="myButton">クリックしてね</button>

このボタンには id="myButton" がついているので、JavaScriptからこのボタンを簡単に見つけられます。

JavaScriptでクリックを検知する

次に、JavaScriptでこのボタンがクリックされたときの処理を定義します。

document.getElementById("myButton").addEventListener("click", function() {
  alert("ボタンがクリックされました!");
});

🔍 どういう意味?

  • document.getElementById("myButton") → HTMLの中からidが「myButton」の要素を探す
  • .addEventListener("click", function() {...}) → 「クリックされたときに、この関数を実行してね」と登録する

✅ 実際の動き

このコードが実行されると、ボタンをクリックした瞬間に alert() が表示されます。

💡 関数を分けて書くこともできる

処理が長くなってきたら、関数を別に用意しておくとコードがスッキリします。

function showMessage() {
  alert("こんにちは!");
}

document.getElementById("myButton").addEventListener("click", showMessage);

このように「関数」+「イベント」の組み合わせで、クリックしたら反応するページが作れるようになります!

関数とイベントを組み合わせると、ユーザーの操作に反応して自由な動きを作ることができます。
たとえば以下のようなことが、すべて関数×イベントで実現できます

1. 背景色を変える

<button id="colorBtn">背景を変える</button>
function changeBackground() {
  document.body.style.backgroundColor = "lightblue";
}

document.getElementById("colorBtn").addEventListener("click", changeBackground);

📌 ボタンをクリックすると、ページ全体の背景色が変わります。

2. テキストを切り替える

<p id="message">こんにちは!</p>
<button id="changeTextBtn">メッセージを変更</button>
function changeText() {
  document.getElementById("message").textContent = "こんばんは!";
}

document.getElementById("changeTextBtn").addEventListener("click", changeText);

📌 表示されているテキストがクリックで切り替わります。

こんにちは!

3. クラスを付けてスタイルを変更

<button id="toggleBtn">スタイル切り替え</button>
<div id="box">ここを変えたい!</div>

<style>
  #box.active {
    background-color: pink;
    color: white;
    padding: 10px;
  }
</style>
function toggleStyle() {
  document.getElementById("box").classList.toggle("active");
}

document.getElementById("toggleBtn").addEventListener("click", toggleStyle);

📌 .classList.toggle() を使うことで、クリックするたびにON/OFFの切り替えができます。

ここを変えたい!

このように、イベントをトリガーとして関数を使うと、Webページが一気に「動きのあるもの」になります。

JavaScriptでイベントを扱うとき、初心者がつまずきやすいポイントがいくつかあります。ここで事前に知っておけば、あとで「動かない!なんで!?」と悩まずにすみます!

ミス1:ボタンが見つからない(nullになる)

document.getElementById("myButton").addEventListener("click", function() {
  alert("クリックされた!");
});

🔸 上のコードを HTMLのボタンより前に書いていると、JavaScriptがボタンをまだ読み込んでいないためエラーになります。

✅ 解決方法:スクリプトはHTMLの最後に書く、もしくは以下のようにする:

<script>
  window.addEventListener("DOMContentLoaded", function() {
    document.getElementById("myButton").addEventListener("click", function() {
      alert("クリックされた!");
    });
  });
</script>

ミス2:関数に () をつけてしまう

// ❌ これはすぐ実行されてしまう
element.addEventListener("click", myFunction());

🔸 () をつけると関数がすぐに実行されてしまうので、イベントが発生していないのに動いてしまいます。

✅ 正しい書き方:

element.addEventListener("click", myFunction); // ← () をつけない

ミス3:関数名のつけ忘れ or スペルミス

関数を定義したのに、addEventListener違う名前を使っているとエラーになります。

function showMsg() {
  alert("OK!");
}

document.getElementById("btn").addEventListener("click", showMessage); // ❌ showMsgじゃない!

🔸 JavaScriptではスペルミスもすべて「別の名前」として扱われるため、動きません。

✅ ミスを防ぐコツ

  • スクリプトはHTMLの下か、DOMContentLoaded を使う
  • () をつけるのは関数を「今すぐ実行」したいときだけ
  • 関数名・ID名はコピペや自動補完を活用してミスを防ごう

今回は、JavaScriptでボタンをクリックして処理を実行する方法を、初心者向けにじっくり解説しました。

📝 今回のポイントをおさらい!

  • イベントとは、ユーザーの操作(クリックなど)に反応する“きっかけ”
  • addEventListener() を使って、イベントが起きたときに関数を実行できる
  • 関数をうまく使えば、処理の再利用・整理整頓ができてコードも見やすくなる
  • HTML+JavaScriptだけで、背景変更やテキスト切り替えなど動きのあるUIが作れる
  • よくあるミス(関数の () つけ忘れ・IDの取得ミス)に注意!

🎯 練習してみよう!

最後に、自分でボタンや関数を少し変えてみて、「クリックしたら色がランダムに変わる」などの練習をしてみるのがおすすめです!

JavaScriptのイベントと関数を使いこなせるようになると、あなたのWebページは一気にインタラクティブになります。小さな一歩から、大きな成長へ!💪

コメント

タイトルとURLをコピーしました