JavaScript HTML DOMイベントリスナー
addEventListener()メソッド
例
ユーザーがボタンをクリックしたときに起動するイベント リスナーを追加します。
addEventListener()
メソッドは、指定された要素にイベントハンドラーをアタッチします。
addEventListener()
メソッドは、既存のイベントハンドラーを上書きせずに、イベントハンドラーを要素にアタッチします。
1つの要素に多数のイベントハンドラーを追加できます。
同じタイプのイベントハンドラーを1つの要素に追加できます。つまり、2つの「クリック」イベントを追加できます。
イベントリスナーは、HTML要素だけでなく、任意のDOMオブジェクトに追加できます。つまり、ウィンドウオブジェクトです。
addEventListener()
メソッドを使用すると、イベントがバブリングにどのように反応するかを制御しやすくなります。
addEventListener()
メソッドを使用すると、JavaScriptがHTMLマークアップから分離されるため、読みやすくなり、HTMLマークアップを制御しない場合でもイベントリスナーを追加できるようになります。
イベントリスナーは、removeEventListener()
メソッドを使用して簡単に削除できます。
構文
最初のパラメータはイベントのタイプです(「click
" また "mousedown
」またはその他のHTMLDOMイベント.)
2番目のパラメーターは、イベントが発生したときに呼び出す関数です。
3番目のパラメーターは、イベントバブリングとイベントキャプチャのどちらを使用するか指定するブール値です。このパラメーターはオプションです。
イベントには「on」プレフィックスを使用しないことに注意してください。"onclick
"の代わりに"click
"を使用してください。
要素にイベントハンドラーを追加する
例
アラート「Hello World!」ユーザーが要素をクリックしたとき:
外部の「名前付き」関数を参照することもできます。
例
アラート「Hello World!」ユーザーが要素をクリックしたとき:
同じ要素に多数のイベントハンドラーを追加する
addEventListener()
メソッドを使用すると、既存のイベントを上書きせずに、同じ要素に多くのイベントを追加できます。
例
異なるタイプのイベントを同じ要素に追加できます。
例
イベントハンドラーをウィンドウオブジェクトに追加する
addEventListener()
メソッドを使用すると、HTML要素、HTMLドキュメント、ウィンドウオブジェクト、またはxmlHttpRequest
オブジェクトなどのイベントをサポートするその他のオブジェクトなどのHTML DOMオブジェクトにイベント リスナーを追加できます。
例
ユーザーがウィンドウのサイズを変更したときに起動するイベントリスナーを追加します。
パラメータの受け渡し
パラメーター値を渡すときは、パラメーターを使用して指定された関数を呼び出す「無名関数」を使用します。
イベントバブリングまたはイベントキャプチャ?
HTML DOMでイベントを伝播するには、バブリングとキャプチャの2つの方法があります。
イベントの伝播は、イベントが発生したときに要素の順序を定義する方法です。<div> 要素内に <p>要素があり、ユーザーが<p>要素をクリックした場合、どの要素の「クリック」イベントを最初に処理する必要がありますか?
バブリングでは、最も内側の要素のイベントが最初に処理され、次に外側のイベントが処理されます。<p>要素のクリックイベントが最初に処理され、次に<div>要素のクリックイベントが処理されます。
キャプチャでは、最も外側の要素のイベントが最初に処理され、次に内側のイベントが処理されます。<div>要素のクリックイベントが最初に処理され、次に<p>要素のクリックイベントが処理されます。
addEventListener()メソッドでは、「useCapture」パラメーターを使用して伝播タイプを指定できます。
デフォルト値はfalseで、バブリング伝播を使用します。値が trueに設定されている場合、イベントはキャプチャ伝播を使用します。
例
removeEventListener()メソッド
このremoveEventListener()
メソッドは、addEventListener()メソッドでアタッチされたイベントハンドラーを削除します。
HTML DOMイベントオブジェクトリファレンス
すべてのHTML DOMイベントのリストについては、完全なHTML DOMイベントオブジェクトリファレンス.
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。