ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript でよく使用されるクリック イベントの概要と共有

JavaScript でよく使用されるクリック イベントの概要と共有

WBOY
WBOY転載
2022-10-11 14:43:155947ブラウズ

この記事では、JavaScript に関する関連知識を提供し、主に、onclick の非同期、同期、イベント トリガーのシーケンスなど、一般的に使用されるクリック時間に関する関連コンテンツを紹介します。内容を以下に見ていきましょう。皆さんの参考になれば幸いです。

JavaScript でよく使用されるクリック イベントの概要と共有

[関連する推奨事項: JavaScript ビデオ チュートリアルWeb フロントエンド]

onclick の概要

onclick は HTML のイベント属性であり、その機能はユーザーが要素をクリックしたときにイベントをトリガーすることです。

onclick イベントは、

ループを使用しました。このループは 1 億回実行されます。今回はページが動かなくなりますが、ボタンのクリックが妨げられることはありません。

現時点では、ボタンをクリックしてもコンソールからの応答はありません。これは、onclick イベントが非同期であるためです。そのため、ボタンをクリックすると、onclick

イベントが実行されます。は処理されません。トリガーされますが、JavaScript 実行スタック内のタスクが完了するまでトリガーされません。

onclick の同期性

上では、onclick イベントは非同期であると言われましたが、今では onclick イベントは同期であると言われています。これは少し矛盾しているように思えます。実際、どちらのステートメントも次のとおりです。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>onclick</title>
</head>
<body>
<button id="btn">click</button>
<script>
    document.getElementById(&#39;btn&#39;).onclick = function () {
        console.log(&#39;click&#39;);
    }
    for (var i = 0; i < 10; i++) {
        console.log(i);
        if (i === 5) {
            document.getElementById(&#39;btn&#39;).click();
        }
    }
</script>
</body>
</html>

上記のコードでは、コンソール出力が 5 に達すると、onclick イベントを手動でトリガーします。このとき、コンソールは click

を出力します。をクリックし、次の出力を続けます。はい、これは onclick 同期を示しています。

関連情報を参照した後、onclick イベントがユーザーによって手動でトリガーされた場合、onclick イベントは非同期であり、イベント キューにプッシュされます。 JavaScript コードによって、onclick イベントは同期され、すぐに実行されます。

onclick のトリガー シーケンス

onclick イベントのトリガー シーケンスは、最初にキャプチャ、次にバブルです。つまり、キャプチャ イベントが最初にトリガーされ、次にバブリング イベントがトリガーされます。 。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>onclick</title>
</head>
<body>
<div id="div1">
    <div id="div2">
        <div id="div3">
            <button id="btn">click</button>
        </div>
    </div>
</div>
<script>
    document.getElementById(&#39;div1&#39;).onclick = function () {
        console.log(&#39;div1&#39;);
    }
    document.getElementById(&#39;div2&#39;).onclick = function () {
        console.log(&#39;div2&#39;);
    }
    document.getElementById(&#39;div3&#39;).onclick = function () {
        console.log(&#39;div3&#39;);
    }
    document.getElementById(&#39;btn&#39;).onclick = function () {
        console.log(&#39;btn&#39;);
    }
</script>
</body>
</html>

上記のコードでは、onclick イベントを

要素と

次に、

したがって、イベントトリガーの順序は、onmousedown、onmouseup、onclick、ondblclick になります。

したがって、onclick イベントを使用するときに、マウス ボタンに関連する複数のイベントがバインドされている場合は、予期しない問題を回避するためにイベント処理のロジックに注意する必要があります。

イベント オブジェクト

onclick イベントでは、イベント パラメーターを通じてイベント オブジェクトを取得できます。イベント パラメーターには、イベント関連情報が含まれています。

イベント オブジェクトのevent は MouseEvent のインスタンスであり、UIEvent と Event を継承するため、イベント オブジェクトには UIEvent と Event のすべてのプロパティとメソッドが含まれます。

MouseEvent プロパティ:

JavaScript でよく使用されるクリック イベントの概要と共有MouseEvent メソッド:

    getModifierState(): ブール値を返します。指定されたキーが押されました。
  • initMouseEvent(): イベント オブジェクトを初期化します。
  • preventDefault(): イベントを防止するデフォルトの動作。
  • stopImmediatePropagation(): イベントの上方へのバブリングを停止し、イベントのさらなるキャプチャまたはバブリングを防ぎます。
  • stopPropagation(): イベントの上方へのバブリングを停止します。
  • クリック イベントの登録方法

クリック イベントは、onclick 属性、addEventListener() メソッド、およびattachEvent() メソッドを使用して登録できます。

onclick 属性onclick 属性は Element の属性です。その値は関数です。クリック イベントがトリガーされると、これは実行される関数。

<button onclick="console.log(&#39;click&#39;)">click</button>

addEventListener()

addEventListener()方法是EventTarget的一个方法,它的第一个参数是事件的名称,第二个参数是事件处理函数,第三个参数是一个布尔值,表示是否在捕获阶段触发事件处理函数。

<button id="btn">click</button>
<script>
  var btn = document.getElementById(&#39;btn&#39;);
  btn.addEventListener(&#39;click&#39;, function() {
    console.log(&#39;click&#39;);
  });
</script>

attachEvent()

attachEvent()方法是EventTarget的一个方法,它的第一个参数是事件的名称,第二个参数是事件处理函数。

<button id="btn">click</button>
<script>
  var btn = document.getElementById(&#39;btn&#39;);
  btn.attachEvent(&#39;onclick&#39;, function() {
    console.log(&#39;click&#39;);
  });
</script>

结语

click事件是鼠标点击事件,它是MouseEvent的一个实例,它的事件类型是click,它可以通过onclick属性、addEventListener()方法和attachEvent()方法注册。

【相关推荐:JavaScript视频教程web前端

以上がJavaScript でよく使用されるクリック イベントの概要と共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。