我了解您不能将任何参数传递给addEventListener
. 你必须这样做
el.addEventListener("click", function(){callSomeFunction("myString");}, false);
但是让我们这样做的原因是什么?
我了解您不能将任何参数传递给addEventListener
. 你必须这样做
el.addEventListener("click", function(){callSomeFunction("myString");}, false);
但是让我们这样做的原因是什么?
因为如果你这样做:
el.addEventListener("click", callSomeFunction("myString"), false);
它将callSomeFunction
立即执行,然后返回其值addEventListener
,然后使用该值。
例如,如果我有这个:
function callSomeFunction() {
doSomeThings();
return 10;
}
然后el.addEventListener("click", callSomeFunction("myString"), false);
真的会打电话el.addEventListener("click", 10, false);
。
如果你有一个没有参数的函数,你可以直接传递它:
el.addEventListener("click", callSomeFunction, false);
addEventListener
必须将函数对象作为它的第二个参数,但是没有理由说明该函数对象不能由另一个函数生成。也许您会对生成函数的高阶函数感兴趣:
function generateAlertFunc(alertString) {
return function() {
alert(alertString);
}
}
el.addEventListener("click", generateAlertFunc("myString"), false);
generateAlertFunc
接受参数并使用它们来构建一个新函数,该函数被传递给addEventListener
.