引数を必要とする関数をイベントリスナーに登録する場合に

イベントリスナーを追加・削除する方法のページでは、addEventListener に登録する関数は関数名だけを記述すると書きました。

しかし、これでは引数を必要とする関数をイベントリスナーとして登録した場合、引数を渡すことができません。

そこで、今回はイベントリスナーとして関数を登録する際に引数を渡す方法を記述しておきます。

イベントリスナーへの引数の渡し方

addEventListener の場合は、下のように記述することになります。

  • オブジェクト.addEventListener('イベント',function(){関数(引数)},イベントの伝達方向)

同じように、attachEvent の場合でも、目的の関数を無名関数内に記述することで引数を渡すことができます。

つまり実際にイベントが発生した時に実行される関数は、あくまでもこの無名関数なので、その中で実行される関数に引数を渡そうが call メソッドで呼び出そうが、イベントリスナーとして登録されるための引数でないので問題ありません。

イベントリスナーとして登録された無名関数の削除

やってみればわかることですが、登録された無名関数は無名なので関数名を指定できず、同内容で記述しても無名関数の外からは削除できません

無名関数をイベントリスナーに登録した場合、removeEventListener 等でリスナーから削除するには、登録された無名関数内から行うしか方法がありません。(関数自身を表す arguments.callee が使用できるため。)

サイト内関連ページ : イベントリスナーを追加・削除する方法

スポンサードリンク

inserted by FC2 system