ホームページ ウェブフロントエンド jsチュートリアル JS のいくつかのタイプのイベント ハンドラーの詳細な紹介

JS のいくつかのタイプのイベント ハンドラーの詳細な紹介

May 17, 2018 am 11:05 AM
javascript イベント タイプ

イベントとは、ユーザーまたはブラウザ自体によって実行される特定のアクションです。クリック、ロード、マウスオーバーなどはイベントの名前です。

イベント フローは、ページからイベントを受信する順序を記述します。

イベントハンドラーは、イベントに応答する関数です。イベント ハンドラーの名前は「on」で始まります。たとえば、クリック イベントに対応するイベント ハンドラーの名前は onclick です。

イベントのハンドラーを指定するには、HTML イベント ハンドラー、DMO レベル 0 イベント ハンドラー、DOM レベル 2 イベント ハンドラー、IE イベント ハンドラー、クロスブラウザー イベント ハンドラーなど、さまざまな方法があります。

(1) htmlイベントハンドラ

つまり、対応するhtmlタグ内にイベントハンドラを記述します。

例:

<input type="button" value="click me" onclick="alert("hello")" />
ログイン後にコピー

欠点: ① HTML 要素がページに表示されるとすぐにユーザーが対応するイベントをトリガーすると、イベント ハンドラーにはまだ実行条件 (たとえば、呼び出されたイベント) が設定されていない可能性があります。関数はまだ利用できません) が解析されている場合)、エラーが発生します。例:

<input type="button" value="click me" onclick="message()" />
ログイン後にコピー
<script type="text/javascript">function message(){alert("hello world");}</script>
ログイン後にコピー

呼び出される関数がボタンの下にあるため、メッセージ関数が読み込まれる前にボタンをクリックするとエラーが発生します。

②htmlコードとjsコードの結合度が高すぎる場合、イベントハンドラーを変更したい場合は、htmlコードとjavascriptコードの2か所を変更する必要があります。

(2) DMOレベル0イベントハンドラ

eg:
var btn=document.getElementById("myBtn");
  btn.onclick=function(){alert(this.id)};
ログイン後にコピー

注: このコードがボタンの後ろにある場合、このコードの前にイベントハンドラが指定されていないため、しばらくクリックしても応答がない可能性があります。実行されます。

DMO レベル 0 イベント ハンドラーは要素のメソッドとみなされます。つまり、DMO レベル 0 イベント ハンドラーは要素のスコープ内で実行されるため、プログラム内の this は現在の要素を参照します。イベント ハンドラーでこれを介して、要素のプロパティとメソッドにアクセスできます。

この方法で追加されたイベント ハンドラーは、イベント フローのバブリング フェーズ中に処理されます。

イベント ハンドラーの属性を null に設定するだけで、指定したイベント ハンドラーを削除することもできます。

eg:
btn.onclick=null;将处理程序设置为null以后,再点击按钮不会发生任何动作。
ログイン後にコピー

(3) DOM2 レベルのイベント ハンドラー

DOM2 レベルのイベントでは、イベント ハンドラーを指定および削除するための 2 つのメソッドが定義されています。これら 2 つの操作は、addEventListener() と RemoveEventListner() です。すべての DOM ノードには、これら 2 つのメソッドが含まれています。処理するイベント名、処理関数、およびブール値の 3 つのパラメーターを受け入れる必要があります。最後のブール値パラメータが true の場合、ハンドラーがキャプチャ フェーズで呼び出されることを意味します。 false の場合、イベント ハンドラーがバブリング フェーズで呼び出されることを意味します。

たとえば、ボタンをクリックするためのイベント ハンドラーを追加するには、次のコードを使用できます:

var btn=document.getElementById("myBtn");
btn.addEventListner("onclick",function(){alert("hello world");false});这里添加的事件处理程序也是依附于元素的的作用域
ログイン後にコピー

DOM2 イベント ハンドラーを使用する利点は、同じ要素に複数のイベント ハンドラーを追加できることです。

例:var btn=getElementById("myBtn");
btn.addEventListner("click",function(){alert(this.id);},flase);
btn.addEventListner("click",function(){alert("hello world");},flase);
ログイン後にコピー

結果: 最初に ID が表示され、次に hello world が表示されます。

addEventListner() を通じて追加されたイベント ハンドラーは、removeEventListner を通じてのみ削除できます。削除に使用されるパラメータは、イベント ハンドラの追加に使用されるパラメータと同じです。もう 1 つの注意: addEventListner を通じて追加された匿名関数は削除できません。

(4) IE イベントハンドラー。イベント ハンドラーを追加および削除するための

IE の関数は、attachEvent() と detachEvent() です。これら 2 つの関数は、同じ 2 つのパラメーター、イベント ハンドラー名とイベント処理関数を受け取ります。 IE はイベント バブリングのみをサポートしているため、attachEvent を通じて追加されたイベント ハンドラーはバブリング フェーズに追加されます。

例如:var btn=document.getElementById("myBtn");
btn.attachEvent("onclick",function(){alert("hello world");});
ログイン後にコピー

IE AttachEvent メソッドを使用する場合、イベント ハンドラーのスコープはグローバル スコープであるため、これは window と等しくなります。 (これは、クロスブラウザー コードを作成するときに覚えておくことが非常に重要です)。

addEventListner と同様に、attachEvent() メソッドを使用して要素に複数のイベント ハンドラーを追加することもできます。

eg:
var btn=document.getElementById("myBtn");
btn.attachEvent("onclick",function(){alert("clicked");});
btn.attachEvent("onclick",function(){alert("hello world");});
ログイン後にコピー

これらのイベントのハンドラーは逆の順序でトリガーされる、つまり hello が最初に表示されることに注意してください。 「ワールドクリック」が再びポップアップ表示されます。

detach()の使用方法について簡単に説明します。

(5) クロスブラウザイベントハンドラー

クロスブラウザでイベントを処理するには、主に次の 2 つの方法があります:

① ブラウザの違いを分離できる js ライブラリを使用します。

②最適なイベント処理メソッドを自分で書きます。ここでは機能検出が使用されています。つまり、ブラウザーの機能を識別します。ほとんどのブラウザーでコードが一貫して実行されるようにするには、バブリング段階だけに注目してください。

コードの手順は次のとおりです。 作成される最初のメソッドは addHandler (ブラウザ間の互換性の問題に対処するために使用されます。ここでは具体的なコードは示されていません) は、DOM0 レベルのメソッドを使用するか DOM2 レベルのメソッドを使用するかを決定することです。方法、状況に応じてイベントを追加する方法。 addHandler は、操作対象の要素、イベント名、イベント ハンドラー関数の 3 つのパラメーターを受け取ります。このメソッドは、EventUtil という名前のオブジェクトに属します。このオブジェクトは、ブラウザ間の違いを処理するためにここで使用されます。

addHandler に対応するメソッドは、removeHandler() で、これも同じパラメータを受け取ります。このイベントの役割は、以前に追加されたイベント ハンドラーを削除することです。イベントがオブジェクトにどのように追加されたとしても、他のメソッドが無効な場合は、デフォルトで DOM レベル 0 メソッドが使用されます。

使用EventUtil的方法如下:var btn=document.getElementById("myBtn");
var hander=function(){alert("hello")};//事件处理程序
EventUtil.addHandler(btn,"onclick",handler);
//其他代码
EventUtil.removeHandler(btn,"onclick",handler);
addHandler()和removeHandler()没有考虑到所有的浏览器问题,例如IE中作用域的问题,但是使用它们添加和移除事件处理程序还是足够了。
ログイン後にコピー

上面是我整理给大家的在js中详细介绍几种类型的事件处理程序的方式,希望今后会对大家有帮助。

相关文章:

重点解答动态加载JS脚本,一语道破

javascript中遍历EL表达式List集合中的值

如何在<script></script>标签中一样可以使用el表达式

以上がJS のいくつかのタイプのイベント ハンドラーの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

ビデオ マトリックス アカウントを作成するにはどうすればよいですか?どのようなタイプのマトリックスアカウントがありますか? ビデオ マトリックス アカウントを作成するにはどうすればよいですか?どのようなタイプのマトリックスアカウントがありますか? Mar 21, 2024 pm 04:57 PM

ショートビデオプラットフォームの人気に伴い、ビデオマトリックスアカウントマーケティングが新たなマーケティング手法となっています。企業や個人は、さまざまなプラットフォームで複数のアカウントを作成および管理することで、ブランドのプロモーション、ファンの増加、製品の販売などの目標を達成できます。この記事では、ビデオ マトリックス アカウントの効果的な使用方法について説明し、さまざまな種類のビデオ マトリックス アカウントを紹介します。 1. ビデオ マトリックス アカウントを作成するにはどうすればよいですか?優れたビデオ マトリックス アカウントを作成するには、次の手順に従う必要があります。 まず、ブランド コミュニケーション、ファンの増加、製品の販売など、ビデオ マトリックス アカウントの目標を明確にする必要があります。明確な目標を持つことは、それに応じた戦略を立てるのに役立ちます。 2. プラットフォームの選択: 対象視聴者に基づいて、適切なショートビデオ プラットフォームを選択します。現在主流のショートビデオプラットフォームには、Douyin、Kuaishou、Huoshan Videoなどが含まれます。

jQueryで選択要素の変更イベントバインディングを実装する方法 jQueryで選択要素の変更イベントバインディングを実装する方法 Feb 23, 2024 pm 01:12 PM

jQuery は、DOM 操作、イベント処理、アニメーション効果などを簡素化するために使用できる人気のある JavaScript ライブラリです。 Web 開発では、選択した要素のイベント バインディングを変更する必要がある状況によく遭遇します。この記事では、jQuery を使用して選択要素変更イベントをバインドする方法を紹介し、具体的なコード例を示します。まず、ラベルを使用してオプションを含むドロップダウン メニューを作成する必要があります。

Golang関数の戻り値の型は何ですか? Golang関数の戻り値の型は何ですか? Apr 13, 2024 pm 05:42 PM

Go 関数は、異なる型の複数の値を返すことができます。戻り値の型は関数シグネチャで指定され、return ステートメントを通じて返されます。たとえば、関数は funcgetDetails()(int,string) のように整数と文字列を返すことができます。実際には、円の面積を計算する関数は、面積とオプションのエラーを返すことができます: funccircleArea(radiusfloat64)(float64,error)。注: 関数シグネチャで型が指定されていない場合は、null 値が返されます。読みやすさを向上させるために、明示的な型宣言を含む return ステートメントを使用することをお勧めします。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

PHP を使用してイベントベースのアプリケーションを構築する方法 PHP を使用してイベントベースのアプリケーションを構築する方法 May 04, 2024 pm 02:24 PM

PHP でイベントベースのアプリケーションを構築する方法には、EventSourceAPI を使用してイベント ソースを作成する方法と、EventSource オブジェクトを使用してクライアント側でイベントをリッスンする方法が含まれます。 Server Sent Events (SSE) を使用してイベントを送信し、XMLHttpRequest オブジェクトを使用してクライアント側でイベントをリッスンします。実際の例は、EventSource を使用して、電子商取引 Web サイトの在庫数をリアルタイムで更新することです。これは、サーバー側で在庫をランダムに変更して更新を送信することで実現され、クライアントは EventSource を通じて在庫の更新をリッスンし、それらを表示します。リアルタイム。

jQueryの閉じるボタンイベントの詳細 jQueryの閉じるボタンイベントの詳細 Feb 24, 2024 pm 05:09 PM

jQuery の閉じるボタン イベントの詳細な理解 フロントエンド開発プロセスでは、ポップアップ ウィンドウを閉じる、プロンプト ボックスを閉じるなど、閉じるボタン機能を実装する必要がある状況によく遭遇します。人気の JavaScript ライブラリである jQuery を使用すると、閉じるボタン イベントの実装が非常に簡単で便利になります。この記事では、jQuery を使用して閉じるボタン イベントを実装する方法を詳しく説明し、読者がこのテクノロジをよりよく理解して習得できるように、具体的なコード例を示します。まず、定義方法を理解する必要があります。

C++ 関数の種類と特性 C++ 関数の種類と特性 Apr 11, 2024 pm 03:30 PM

C++ 関数には、単純関数、const 関数、静的関数、および仮想関数というタイプがあり、インライン関数、デフォルト パラメーター、参照戻り値、およびオーバーロードされた関数などの機能が含まれます。たとえば、calculateArea 関数は π を使用して、指定された半径の円の面積を計算し、それを出力として返します。

See all articles