function myFunc(parameter1) {
//function definition
}
document.getElementById("some Id").addEventListener("click", myFunc(myparameter));
为什么我不能将参数传递给eventListener中的myFunc()函数?我知道我可以用这种方式 -
document.getElementById("some Id").addEventListener("click", function() {
myFunc(myparameter);
});
但为什么我不能直接这样做?
PS-我想知道W3C规定的规则是否应该直接遵循(我不应该问这个问题),还是每个规则背后都有原因?
答案 0 :(得分:2)
myFunc(myparameter)
现在执行函数,而不是在触发事件时执行。您希望传递一个执行myFunc
的函数,并在调用时传递参数,即触发事件时。最直接的方法是:
.addEventListener('click', function () { myFunc(myparameter); })
可能不太明显的方法是Function.prototype.bind
:
.addEventListener('click', myFunc.bind(null, myparameter))
答案 1 :(得分:1)
您的代码中存在问题。 myFunc(myparameter)
以正确的方式执行。您需要使用以下方式调用自定义函数:
document.getElementById("some Id").addEventListener("click", function () {
myFunc(myparameter);
});