こんにちは、Ryohei(@ityryohei)です!

本記事では、JavaScriptでaddEventListenerにパラメータを渡す方法をご紹介しています。

JavaScriptでaddEventListenerにパラメータを渡したいな。良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

addaddEventListenerにパラメータを渡すには

よく使われる手法として下記の方法が挙げられます。

  • 即時関数内で関数を呼び出して引数を指定する
  • EventListenerオブジェクトを指定する

それぞれ詳しくご紹介します。

即時関数内で関数を呼び出して引数を指定する

addEventListenerの即時関数内で関数を呼び出し、引数に指定することで値を渡すことができます。

const myFunc = function(message){
    console.log(message);
}

window.addEventListener('load', function(){
    myFunc('ページの読み込みが完了しました');
}, false);

実行するとコンソールに下記も内容が出力されます。

ページの読み込みが完了しました

関数に値を渡すことができています。この方法でもやりたいことが実現できている場合は問題ないと思いますが、もう少しスマートな書き方がありますので、次項でご紹介します。

EventListenerオブジェクトを指定する

addEventListenerの第2引数にリスナー関数ではなくEventListenerオブジェクトを指定します。EventListenerオブジェクトはイベントリスナーに指定することができるオブジェクトです。必ずhandleEventメソッドを持つ必要があります。EventListenerオブジェクトをイベントリスナーの第2引数に指定すると、リスナー関数としてhandleEventメソッドが実行されます。プロパティを自由に持たせることができるので、これをパラメータとして利用します

実際にイベントリスナーの第2引数にEventListenerオブジェクトを指定してみます。EventListenerオブジェクトにはhandleEventメソッドとmessageプロパティを持たせます。

const obj = {
    message: 'ページの読み込みが完了しました',
    handleEvent: function(){
        console.log(this.message);
    }
}

window.addEventListener('load', obj, false);

実行すると下記の内容がコンソールに表示されます。messageプロパティに持たせた文字列が出力されていることが確認できます。

ページの読み込みが完了しました

EventListenerオブジェクトのhandleEventメソッドが実行され、プロパティに指定した文字列が出力されています。handleEventメソッドが呼び出すことなく実行されていますね。このように任意の値を持たせることでイベントリスナーにパラメータを渡すことが可能です。

addEventListenerの第2引数にはオブジェクトが指定できることがわかりました。オブジェクトが指定できるということは、下記のような記述も可能です。

const myFunc = function(){
    console.log(this.message)
}

window.addEventListener('load', {
    message: 'ページの読み込みが完了しました',
    handleEvent: myFunc
}, false);

handleEventメソッドの処理内容を直接記述してもいいかもしれませんね。

window.addEventListener('load', {
    message: 'ページの読み込みが完了しました',
    handleEvent: function(){
        console.log(this.message)
    }
}, false);

記述方法についてはエンジニアで好みが分かれる部分ですが、即時関数内で関数を呼び出すよりもEventListenerオブジェクトを指定する方がずっとスマートです。今後addEventListenerにパラメータを渡したい場合はEventListenerオブジェクトを使用するに心掛けたいと思います。

最後に

addEventListenerは素のJavaScriptでコーディングをする際に何度も記述することになるメソッドです。パラメータを渡したいケースは結構あるので、EventListenerオブジェクトを指定するやり方を覚えておくと良いかもしれませんね。

以上、JavaScriptでaddEventListenerにパラメータを渡す方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。

JavaScriptを基礎からしっかりと学びたい方へ

下記の参考書がおすすめです。私がJavaScript入門時に購入した書籍で、基礎から応用まで多様なサンプルを用いて解説されています。ページ数は多いですが、内容が伴っているのですらすら読めます。腰を据えて学びたい方に最良の一冊となっています。