Javascript addEventListener";激活";自动地
基本问题我知道,但我在理解一些东西上有困难。我有一个模拟掷骰子的函数,其中面数作为参数:Javascript addEventListener";激活";自动地,javascript,Javascript,基本问题我知道,但我在理解一些东西上有困难。我有一个模拟掷骰子的函数,其中面数作为参数: function throw(faces){ //My function here } 然后,我有按钮来模拟那些具有不同数字的启动,我希望它们在单击时启动throw: document.getElementById("4").addEventListener("click",throw(4)); document.getElementById("6").addEventListener("click",t
function throw(faces){
//My function here
}
然后,我有按钮来模拟那些具有不同数字的启动,我希望它们在单击时启动throw
:
document.getElementById("4").addEventListener("click",throw(4));
document.getElementById("6").addEventListener("click",throw(6));
等等
但是当我启动CodePen()时,函数会自动启动(尽管参数正确),然后我就不能单击按钮了。我可以,但什么也没发生
我做错了什么?我觉得这是一个非常基本的东西,但我似乎无法理解。我已经看到,如果您将
throw
而不是throw()
放入,函数不会自动启动,但是我该如何更改参数呢?您的throw
函数需要将函数返回到addEventListener
。例如:
function throw ( faces ) {
return function () {
return Math.floor( Math.random() * faces );
}
}
throw(4)
自动执行/调用该方法,因为您正在使用()
调用函数/方法。如果希望按钮上的事件侦听器在单击时调用throw(4)
,请使用以下命令:
document.getElementById("4").addEventListener("click", function(){
throw(4);
});
或
您可以使用返回带有预设的this
关键字和参数的新函数(在本例中为null
):
或者定义一个新函数,在该函数中执行throw
:
document.getElementById("4").addEventListener("click", function() {
throw(4);
});
document.getElementById("6").addEventListener("click", function() {
throw(6);
});
function throw(faces){
// My function here
}
document.getElementById("4").addEventListener("click", throw.bind(null, 4));
document.getElementById("6").addEventListener("click", throw.bind(null, 6));
document.getElementById("4").addEventListener("click", function() {
throw(4);
});
document.getElementById("6").addEventListener("click", function() {
throw(6);
});