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最適化ツール(推奨)

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

推薦する

Vuex はシンプルなショッピングカート機能を実装します

この記事の例では、ショッピングカート機能を実装するためのvuexの具体的なコードを参考までに共有して...

Windows 10 システムで nginx ファイル サーバーを構成するためのグラフィック チュートリアル

Nginx の公式 Web サイトから Windows バージョンの Nginx をダウンロードしま...

Vue で lodop 印刷コントロールを使用してブラウザ互換の印刷を実現する方法

序文このコントロールを直接印刷すると下部に透かしが入りますが、公式 Web サイトから購入することで...

Windows 10 での MySQL 8.0.11 圧縮バージョンのインストール チュートリアル

この記事では、MySQL 8.0.11圧縮版のインストールチュートリアルを参考までに紹介します。具体...

Dockerデータボリューム操作の実装

データボリュームの使用開始先ほどのケースでは、ホストからコンテナにデータをコピーする必要がある場合、...

Nginxのアクセスボリューム制御の詳細な説明

目的リクエスト アクセス ボリュームを制御するための Nginx ngx_http_limit_co...

html、xhtml、xmlの違い

開発動向: html (ハイパーテキスト マークアップ言語) - xhtml (拡張ハイパーテキスト...

Vue を使用して CSS トランジションとアニメーションを実装する方法

目次1. トランジションとアニメーションの違い2. Vueを使用して基本的なCSSトランジションとア...

...

ボタンをクリックしてテキストを入力ボックスに変換し、保存をクリックしてテキスト実装コードに変換します。

ボタンをクリックしてテキストを入力ボックスに変換し、保存をクリックしてテキスト実装コードに変換します...

Javascript DOM、ノード、要素取得の紹介

目次DOMノード要素ノード:テキストノード:プロパティ ノード:要素を取得getElementByI...

uniapp アプレットでウォーターフォール フロー レイアウトを実装するためのアイデアとコード

1. はじめに今、ウォーターフォールフローについて書くことは、古い内容の焼き直しと見なされますか?気...

Docker Composeでコンテナ管理の問題を解決する

Docker の設計では、コンテナは 1 つのアプリケーションのみを実行します。しかし、現在のアプリ...

HTML にネストされた div の無効なマージンに対する解決策

div がネストされているときに margin が機能しない問題の解決策を次に示します。さて、マージ...

Vue プロジェクト コード分割ソリューション

目次背景目的分割前プロセス設計ディレクトリ構造の設計問題分割後プロセス設計ディレクトリ構造の設計問題...