JavaScriptのchangeイベントを徹底解説!正しい使い方と注意点【ウェブデザイン技能検定 1級学科範囲】

フォーム要素やチェックボックスの状態変更を検知するchangeイベントはJavaScriptで動的な処理を実現するための基本機能です。
しかし、使い方を誤ると意図しない結果を引き起こすことがあります。
本記事では、changeイベントの正しい使い方を具体例とともに解説し、発生しがちな問題を防ぐためのヒントを紹介します。

changeイベントとは?

changeイベントは、フォーム要素の値や状態が変更された後に発生します。このイベントは主に以下の要素で使用されます。

  • inputtype="text", type="checkbox", type="radio"など)
  • select
  • textarea

発生のタイミング

  • texttextarea: フォーカスが外れたときに発生します。
  • checkboxradio: チェック状態が変更された瞬間に発生します。
  • select: 選択肢が変更された瞬間に発生します。

正しい使い方

チェックボックスの状態を取得する

チェックボックスの状態(checkedプロパティ)を取得するには、イベントオブジェクトを使用します。

const checkbox = document.querySelector('#myCheckbox');
checkbox.addEventListener('change', (event) => {
    console.log('チェック状態:', event.target.checked);
});

実行結果

  • チェックされた場合: true
  • チェックが外された場合: false

よくある誤りとその結果

1. checkedプロパティを直接使用

間違ってeventを抜かして以下のように記述すると、意図しない結果を引き起こすことがあります。

checkbox.addEventListener('change', () => {
    console.log('チェック状態:', checkbox.checked);
});

問題点

  • このコードでは、イベントリスナー内でcheckbox変数を直接参照しています。
  • もし同じイベントリスナーを複数のチェックボックスに適用した場合、意図した結果が得られません。

2. valueを使用して状態を取得しようとする

checkbox.valueを使用すると、checkedプロパティとは異なる結果が得られます。

javascriptコードをコピーするcheckbox.addEventListener('change', (event) => {
    console.log('値:', event.target.value);
});

実行結果

valueプロパティは、チェックボックスの状態ではなく、<input>タグのvalue属性の値を返します。

応用例と注意点

チェックボックスの一括操作

複数のチェックボックスをまとめて操作する例です。

コード例

const checkboxes = document.querySelectorAll('.checkbox-group');
checkboxes.forEach((checkbox) => {
    checkbox.addEventListener('change', (event) => {
        console.log(`ID: ${event.target.id}, 状態: ${event.target.checked}`);
    });
});

注意点

  • 必ずevent.targetを使用して現在のチェックボックスを参照する。
  • 直接変数を参照すると、意図しないチェックボックスの状態を取得する可能性があります。

select要素の使用例

コード例

const dropdown = document.querySelector('#dropdown');
dropdown.addEventListener('change', (event) => {
    console.log('選択された値:', event.target.value);
});

実行結果

選択肢を変更すると、そのvalueが取得されます。

changeイベントとinputイベントの違い

  • changeイベント: 値や状態が確定したときに発生。
  • inputイベント: 値が入力された瞬間に発生。

違いを確認する例

const inputField = document.querySelector('#textInput');

// changeイベント
inputField.addEventListener('change', () => {
    console.log('change: フォーカスが外れた後に発生');
});

// inputイベント
inputField.addEventListener('input', () => {
    console.log('input: 入力のたびに発生');
});

まとめ

JavaScriptのchangeイベントは、フォーム要素の状態変更を検知する便利な機能です。
しかし正確な結果を得るためには、event.targetcheckedプロパティの正しい使用が不可欠です。
本記事を参考に、適切なイベントリスナーの設定方法をマスターしてスムーズなユーザー体験を実現しましょう。

スポンサーリンク

この記事が気に入ったら
フォローしよう

最新情報をお届けします

Twitterでフォローしよう

おすすめの記事

 

スポンサードリンク