JS addEventListener() およびattachEvent() メソッドは登録イベントを実装します

JS addEventListener() およびattachEvent() メソッドは登録イベントを実装します

JavaScript の DOM イベント モデルでは、オブジェクトの addEventListener() メソッドを呼び出すことによってイベントが登録されます。使用方法は次のとおりです。
element.addEventListener(文字列型、関数リスナー、ブール値 useCaptrue);

パラメータの説明は次のとおりです。

  • type: 登録されたイベントのタイプ名。イベント タイプはイベント属性とは異なります。イベント タイプ名には「on」というプレフィックスは付きません。たとえば、イベント属性 onclick の場合、対応するイベント タイプは click です。
  • リスナー: リスニング機能、つまりイベント処理機能。この関数は、指定されたタイプのイベントが発生したときに呼び出されます。この関数が呼び出されると、デフォルトで渡される唯一の引数はイベント オブジェクトです。
  • useCaptrue: はブール値です。 true の場合、指定されたイベント ハンドラーはイベント伝播のキャプチャ フェーズ中にトリガーされます。false の場合、イベント ハンドラーはバブリング フェーズ中にトリガーされます。

例1

次の例では、addEventListener() を使用して、すべてのボタンのクリック イベントを登録します。まず、document の getElementsByTagName() メソッドを呼び出してすべてのボタン オブジェクトを取得します。次に、for ステートメントを使用してボタン セット (btn) を走査し、addEventListener() メソッドを使用して各ボタンのイベント関数を登録し、現在のオブジェクトによって表示されるテキストを取得します。

<button id="btn1" onclick="btn1();">ボタン 1</button>
<button id="btn2" onclick="btn2(event);">ボタン 2</button>
<スクリプト>
  var btn = document.getElementsByTagName("button"); //すべてのボタンをキャプチャする for(var i in btn){ //ボタンコレクションを走査する btn[i].addEventListener("click", function(){
    アラート(this.innerHTML);
  }, true); //各ボタンオブジェクトのイベント処理関数を登録し、キャプチャフェーズでの応答を定義します}
</スクリプト> 

ブラウザでプレビューし、さまざまなボタンをクリックすると、ブラウザにボタン名が自動的に表示されます。効果は図に示されています:

addEventListener() メソッドを使用して、複数のオブジェクトに対して同じイベント処理関数を登録したり、同じオブジェクトに対して複数のイベント処理関数を登録したりします。同じオブジェクトに対して複数のイベント ハンドラーを登録することは、モジュール開発に非常に便利です。

例2

次の例では、段落テキストに対して mouseover と mouseout の 2 つのイベントが登録されています。カーソルが段落テキスト上に移動すると、青い背景で表示され、カーソルが段落テキストの外に出ると、自動的に赤い背景で表示されます。この方法では、ドキュメント構造を破壊したり、段落テキストに複数のイベント属性を追加したりする必要がなくなります。

<p id="p1">オブジェクトに複数のイベントを登録する</p>
<スクリプト>
  var p1 = document.getElementById("p1"); //段落要素のハンドルを取得します p1.addEventListener("mouseover", function () {
    this.style.background = '青';
  }, true); //段落要素の最初のイベントハンドラを登録します p1.addEventListener("mouseout", function () {
    this.style.background = '青';
  }, true); //段落要素の2番目のイベントハンドラを登録します</script>

IE イベント モデルは、attachEvent() メソッドを使用してイベントを登録します。使用方法は次のとおりです。

要素.attachEvent(etype、イベント名)

パラメータリストは次のとおりです。

  • etype: onclick、onkeyup、onmousemove などのイベント タイプを設定します。
  • eventName: イベント処理関数であるイベント名を設定します。

例3

次の例では、段落タグ <p> に mouseover と mouseout の 2 つのイベントが登録されています。カーソルが通過すると段落テキストの背景色は青になり、カーソルが離れると背景色は赤になります。

<p id="p1">オブジェクトに複数のイベントを登録する</p>
<スクリプト>
  var p1 = document.getElementById("p1"); //段落要素をキャプチャ p1.attachEvent("onmouseover", function () {
    this.style.background = '青';
  }); //マウスオーバーイベントを登録 p1.attachEvent("onmouseout", function () {
    this.style.background = '赤';
  }); // マウスアウトイベントを登録する</script>

イベントを登録するためにattachEvent()を使用すると、イベント処理関数の呼び出しオブジェクトは現在のイベントオブジェクト自体ではなく、ウィンドウオブジェクトになります。したがって、イベント関数内の this は現在のオブジェクトではなく、ウィンドウを指します。現在のオブジェクトを取得する場合は、イベントの srcElement 属性を使用する必要があります。

IE イベント モデルの attachmentEvent() メソッドの最初のパラメーターはイベント タイプ名であり、先頭に on を付ける必要がります。addEventListener() メソッドを使用する場合、click のように on プレフィックスは不要です。

登録イベントを実装するための JS addEventListener() および attachEvent() メソッドに関するこの記事はこれで終わりです。関連する JS addEventListener() および attachEvent() コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScriptのEventBusはオブジェクト間の通信を実装します
  • JS イベントループの仕組み イベントループ マクロタスク マイクロタスク 原理分析
  • Js on と addEventListener の原則と使用法の違いの分析
  • JavaScriptイベントループの簡単なモデル説明と応用分析
  • js での addEventListener() と removeEventListener() の使用例分析
  • node.js のイベントループの理解と応用例
  • node.JS イベントの仕組みとイベントモジュールの使い方の詳しい説明
  • JavaScript マウスイベントのケーススタディ

<<:  要素の属性を削除する JS removeAttribute() メソッド

>>:  Vue における ref と $refs の紹介と使用例

推薦する

jsはシングルクリックでテーブルを変更することを実装します

Pure jsは、参照用にワンクリックで編集可能なテーブル(トランスクリプトに似たもの)を実装してい...

Typora コードブロックのカラーマッチングとタイトルシリアル番号実装コード

効果: タイトルには独自のシリアル番号があり、コードブロックには配色があり、コードブロックの左上隅に...

mysql-8.0.17-winx64 のデプロイメント方法

1. 公式サイトからmysql-8.0.17-winx64をダウンロードし、Zipファイル形式を選択...

Nacos で MySQL8 を設定する方法

1. MySQLデータベースnacos_configを作成する2. データベース nacos_con...

Linux で文字化けしたファイルや特殊文字のファイルを削除する方法

エンコーディングの理由により、Linux サーバーに中国語のファイルやディレクトリをアップロードまた...

JavaScript におけるブラウザ互換性の問題について簡単に説明します

ブラウザの互換性は、実際の開発では見落とされがちな最も重要な部分です。古いバージョンのブラウザの互換...

Dockerのヘルス検出メカニズム

コンテナの場合、最も単純なヘルスチェックはプロセス レベルのヘルスチェックであり、プロセスが稼働して...

MySQLの基本操作学習ノートテーブル

テーブルを作成テーブルテーブル名を作成create table if not exists 表名 m...

Nginx_geo モジュールを使用して CDN スケジュールを設定する方法

NginxのGeoモジュールの紹介geo ディレクティブは、ngx_http_geo_module ...

Centos での Python のアップグレードと Mongodb ドライバーのインストールに関する問題

Python バージョンを確認します (python -V)。2.7 未満の場合は、アップグレードす...

Jenkins + Docker + ASP.NET Core の自動デプロイメントの問題について (落とし穴を避ける)

このブログを書くつもりはなかったのですが、実際の操作中に、ネットワークの問題に圧倒されたこと (ネッ...

MySQLのビューとインデックスの使い方と違いの詳細な説明

MySQL ビュー簡単に言えば、MySQL ビューは SELECT コマンドを定義するためのショート...

Google Chromeの自動入力問題に対する完璧な解決策

Google Chrome では、ログインに成功すると、パスワードを記憶するかどうかを尋ねるメッセー...

MySQL Truncate の使用方法の詳細な説明

目次MySQL 切り捨ての使用1. 構文を切り捨てる2. Truncateの使用上の注意3. TRU...

Vue はコンポーネント間の通信をどのように実装しますか?

目次1. 父と息子のコミュニケーション1.1 親コンポーネント --> 子コンポーネント1.2...