将事件和参数传递给另一个函数

时间:2017-01-30 21:55:26

标签: javascript

为了将事件信息传递给change函数,我必须从没有括号的事件监听器调用change函数。

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

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

function change(e){
  e.target.style.border = '1px solid red';
}

当我想要传递参数以及传递事件时,问题就出现了。似乎在添加参数时事件失败。

我如何能够在传递事件的地方包含这样的内容来更改边框但是还能够将参数传递给函数?

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 个答案:

答案 0 :(得分:2)

传递一个匿名函数:

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

答案 1 :(得分:0)

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

现在将其添加到您的点击事件

boxes[i].addEventListener('click', changeFn, false);
在这种情况下,

删除事件侦听器很简单

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