[英]I can not pass parameters to a function using addEventListener Javascript/Jquery
[英]why can't you pass parameters directly using addEventListener?
我知道你不能将任何参数传递给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
的新函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.