HTML要素.addEventListener() 対応: DOM Level 2(2000)
HTML要素にイベントリスナーを登録し、指定したイベントが発生した際に実行される関数を設定します。
構文
element.addEventListener("イベント名", 関数);
// オプション付き
element.addEventListener("イベント名", 関数, オプション);
引数
| 引数 | 概要 |
|---|---|
| イベント名 | 監視するイベントの名前を文字列で指定します。『click』『input』『submit』『keydown』『scroll』『load』などがあります。『on』は付けません。 |
| 関数 | イベント発生時に実行されるコールバック関数を指定します。引数としてイベントオブジェクトが渡されます。 |
| オプション | 省略可能です。『{ once: true }』を指定すると、イベントが1回だけ実行されて自動的に解除されます。 |
主なイベント一覧
| イベント | 概要 |
|---|---|
| click | HTML要素がクリックされた時に発生します。 |
| input | テキストフィールドの値が変更された時に発生します。入力のたびに即座に発生します。 |
| change | フォーム要素の値が確定された時に発生します。テキストフィールドではフォーカスが外れた時に発生します。 |
| submit | フォームが送信された時に発生します。 |
| keydown | キーが押された時に発生します。 |
| keyup | キーが離された時に発生します。 |
| mouseover | マウスがHTML要素の上に乗った時に発生します。 |
| mouseout | マウスがHTML要素から離れた時に発生します。 |
| scroll | スクロールされた時に発生します。 |
| load | ページや画像の読み込みが完了した時に発生します。 |
サンプルコード
<button id="btn">クリック</button> <input id="name" type="text" placeholder="名前を入力"> <p id="output"></p>
// クリックイベント
var btn = document.querySelector("#btn");
btn.addEventListener("click", function() {
alert("ボタンがクリックされました!");
});
// 入力のたびにリアルタイムに反映されるイベントです。
var input = document.querySelector("#name");
var output = document.querySelector("#output");
input.addEventListener("input", function(e) {
output.textContent = "こんにちは、" + e.target.value + "さん!";
});
// 1回だけ実行されるイベントです。
btn.addEventListener("click", function() {
console.log("これは1回しか表示されません");
}, { once: true });
概要
『HTML要素.addEventListener()』はイベント駆動プログラミングの基本となるメソッドです。ユーザーの操作(クリック、入力、スクロールなど)やブラウザのイベント(読み込み完了など)を監視し、発生時に任意の処理を実行できます。
コールバック関数にはイベントオブジェクトが引数として渡され、このオブジェクトには『target』(イベント発生元のHTML要素)や『preventDefault()』(デフォルト動作の抑止)などの便利なプロパティやメソッドが含まれています。
同じHTML要素に同じイベントで複数のリスナーを登録することも可能です。古い書き方である『HTML要素.onclick = function() {}』はリスナーが1つしか登録できないため、『HTML要素.addEventListener()』の使用をおすすめします。
登録したリスナーを解除する場合は『removeEventListener()』を使用します。ただし、解除するにはリスナー登録時と同じ関数の参照が必要なため、無名関数で登録したリスナーは解除できません。解除が必要な場合は名前付き関数を使用してください。
『HTML要素.addEventListener()』はチュートリアル記事『イベント処理(1)』『イベント処理(2)』で、より詳しく解説しています。良ければご覧下さい。
対応ブラウザ
5 以前 ×
6 以前 ×
Android Browser
37 以降 ○
Chrome Android
36 以降 ○
17 以前 ×
Firefox Android
79 以降 ○
3 以前 ×記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。