2017-01-30 7 views
1

イベント情報を変更関数に渡すには、イベントリスナーからかっこなしでchange関数を呼び出す必要があります。イベントと引数を別の関数に渡す

​​

問題は、イベントを渡すだけでなく、引数を渡したいときに発生します。それは、イベントが失敗する引数を追加するときのようです。

どうすれば境界を変更するためにイベントが渡されますが、引数を関数に渡すことができるこのようなものを含めることができますか?

var boxes = document.getElementsByClassName('boxes'); 

for(var i = 0; i < boxes.length; i++){ 
    boxes[i].addEventListener('click', change(10, 20), false); 
} 

function change(e, a, b){ 
    e.target.style.border = '1px solid red'; 
    console.log(a * b); 
} 

助けがあれば助かります。

答えて

2

はそれを無名関数に渡し:

boxes[i].addEventListener('click', function (e) { change(e, 10, 20) }, false); 
+0

何@ Paulproはあなたが望むものに最も近いものを言った、そしてあなたは未知のパラメータを持つデリゲートを作成することはできません。私は私のケースでは、ajaxの成功関数にパラメータを送信してこれを試してみました。 –

0
var changeFn = function (e) { 
    change(e, 10, 20); 
}; 

を今

boxes[i].addEventListener('click', changeFn, false); 

あなたのクリックイベントに削除イベントリスナーを、これを追加し、この場合には簡単です

boxes[i].removeEventListener('click', changeFn, false); 
関連する問題