JavaScriptのonclickとclickの違いの詳細な説明

JavaScriptのonclickとclickの違いの詳細な説明

これがddEventListeneronの違いです

addEventListener が必要な理由は何ですか?

まずはクリップを見てみましょう:

<div id="box">テスト</div>

コードの使用:

windwo.onload = 関数(){
  var box = document.getElementById("box");
  box.onclick = ()=>console.log("私はbox1です");
  box.onclick = ()=>console.log("私はbox2です");
}
// 実行結果: 私はbox2です

2 番目の onclick イベントが最初の onclick をカバーしているのがわかります。ほとんどの場合、on を使用して目的の効果を得ることができますが、場合によっては複数の同一イベントを実行する必要があり、これは明らかに on を使用して実現することは不可能です。ただし、addEventListener を使用すると、以前のイベントを上書きせずに同じイベントを複数回バインドできます。

addEventListener を使用したコード

window.onload = 関数(){
  var box = document.getElementById("box");
  box.addEventListener("click",()=>console.log("私はbox1です"));
  box.addEventListener("click",()=>console.log("私はbox2です"));
}
// 操作結果: 私はbox1です
            //私はボックス2です

addEventListenerメソッドの最初のパラメータにはイベント名が入ります。記述する必要がないことに注意してください。2 番目のパラメータは関数にすることができます。3 番目のパラメータは、イベントをバブリング ステージで処理するか、キャプチャ ステージで処理するかを示します。true の場合はキャプチャ ステージで処理することを意味します。false の場合はバブリング ステージで処理することを意味します。3 番目のパラメータは省略できます。ほとんどの場合、3 番目のパラメータは必要ありません。3 番目のパラメータを記述しない場合は、デフォルトで false になります。

3番目のパラメータの使用

時々、状況は次のようになります:

<本文>
  <div id = "ボックス">
    <div id = "子"></div>
  </div>
</本文>

ボックスに cclick イベントを追加すると、ボックスを直接クリックしても問題ありませんが、子要素をクリックした場合はどのように実行されますか?

box.addEventListener("click",()=>console.log("box"));
child.addEventListener("click",()=>console.log("child"));
// 実行結果: 子 -> ボックス

つまり、デフォルトではイベント バブリングの実行順序に従います。

ここに画像の説明を挿入

3 番目のパラメータが true の場合、イベントがキャプチャされた順序で実行されます。

要約する

1. onclickイベントは一度に1つのオブジェクトのみを指すことができます

2. addEventListener 1つのイベントに複数のリスナーを登録できる

3. addEventListener任意のDOM要素に有効ですが、onclickはHTML要素に限定されます。

4. addEventListenerリスナーのトリガーフェーズ(キャプチャ/バブル)を制御できます。

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • JavaScript onclickイベントの使い方の詳しい説明
  • JavaScript における click と onclick の本質的な違いと使用法の分析
  • JSは、同じDOM要素上のonClickイベントとonDblClickイベントの共存に対するソリューションを実装します。
  • JavaScript でクリック イベント (onclick) をボタンにバインドする方法
  • JavaScript は onclick イベントを使用して、選択した行の色を変更します。

<<:  MySQL最適化ツール(推奨)

>>:  マークアップ言語 -

推薦する

HTML シンボルからエンティティへのアルゴリズムのチャレンジ

チャレンジ:文字列内の文字 &、<、>、" (二重引用符)、および &...

WeChatアプレットのスクロールビューが左右にスライドできない問題を解決する方法

私は現在、自分自身の小さなプログラム プロジェクトに取り組んでいます。プロフェッショナルなフロントエ...

Vue の 4 つのカスタム命令の説明と使用例

4つの実用的なVueカスタム指示1. Vドラッグ要件: マウスドラッグ要素アイデア:要素のオフセット...

Mysql 5.7.19 無料インストール バージョンで遭遇した落とし穴 (コレクション)

1. 公式ウェブサイトから 64 ビットの zip ファイルをダウンロードします。 2. インスト...

Docker ログが多すぎてディスクがいっぱいになる場合の対処方法

複数の Docker コンテナがデプロイされたサーバーがあり、各 Docker コンテナが stde...

Linux ソフトウェアのインストール場所を確認する簡単な方法

1. ソフトウェアのインストールパスを確認します。 Linuxソフトウェアをインストールできる場所は...

element-ui 写真をアップロードした後、座標点をマークします

要素UIとはelement-ui は、Ele.me のフロントエンド チームが開発者、デザイナー、製...

スパンの最小高さを定義するソリューションは効果がありません

span タグは HTML ウェブページを作成するときによく使用されますが、このタグの使い方がよくわ...

::before/:before と ::after/:after の使用に関する深い理解

パート1: 基礎1. :active や :hover などの疑似クラスとは異なり、これらはすべて疑...

JavaScript を使用して二分探索木を実装する方法

コンピュータ サイエンスで最も一般的に使用され、議論されているデータ構造の 1 つは、二分探索木です...

React Router 5.1.0 はページジャンプナビゲーションを実装するために useHistory を使用します

目次1. withRouterコンポーネントを使用する2. ルートタグを使用するReactRoute...

Dockerコンテナにvimコマンドがない問題を解決する方法

問題を見つける今日、Docker コンテナ内のファイルを変更しようとしたところ、コンテナ内に vim...

独自のネイティブ JavaScript ルーターを作成する方法

目次序文導入JavaScript 履歴 API独自のネイティブJSルーティングを実装するHistor...

Vue開発の詳細な説明 ソートコンポーネントコード

目次 <テンプレート> <ul class="コンテナ">...

Docker を使用した ElasticSearch:7.8.0 クラスターのインストールに関する詳細なチュートリアル

ElasticSearch クラスターは、クラスターを構築するための動態請求的方式と靜態配置文件をサ...