Javascript将值传递给事件侦听器上的函数
如果我执行以下操作,变量将被传递到附加的事件侦听器,我希望在添加事件侦听器时传递变量的值Javascript将值传递给事件侦听器上的函数,javascript,Javascript,如果我执行以下操作,变量将被传递到附加的事件侦听器,我希望在添加事件侦听器时传递变量的值 foo=a; document.addEventListener('mousedown', function() { doSomething(foo) }, false); foo=b; doSomething(val){ alert(val); } 所以它应该提醒a而不是b 因为foo是全局的,所以在检测到事件之前,在第3行上覆盖foo 您可能想考虑获取Foo的值,并将其存储在对象或插件中或
foo=a;
document.addEventListener('mousedown', function() { doSomething(foo) }, false);
foo=b;
doSomething(val){
alert(val);
}
所以它应该提醒a而不是b 因为foo是全局的,所以在检测到事件之前,在第3行上覆盖foo
您可能想考虑获取Foo的值,并将其存储在对象或插件中或类似于将其抽象为正常代码流,或将其传递到回调函数:
document.addEventListener'mousedown',functionouterFoo{doSomethingouterFoo;}foo,false 因为foo是全局的,所以在检测到事件之前,在第3行上覆盖foo
您可能想考虑获取Foo的值,并将其存储在对象或插件中或类似于将其抽象为正常代码流,或将其传递到回调函数:
document.addEventListener'mousedown',functionouterFoo{doSomethingouterFoo;}foo,false 类似于:var foo = 'a';
document
.getElementById('foo')
.addEventListener('click', function(bar) {
// return the actual event handler function
return function() {
doSomething(bar);
};
}(foo) /* <-- call the anonymous function, passing in the current foo*/, false);
foo = 'b';
function doSomething (val) {
alert(val);
}
演示:类似于:
var foo = 'a';
document
.getElementById('foo')
.addEventListener('click', function(bar) {
// return the actual event handler function
return function() {
doSomething(bar);
};
}(foo) /* <-- call the anonymous function, passing in the current foo*/, false);
foo = 'b';
function doSomething (val) {
alert(val);
}
演示:添加事件侦听器时,如何创建值的副本?它必须是静态的,因为将创建多个按钮。脚本正确的时间是警告b而不是a,因为当用户单击时,foo已经有了值b;通过addEventListener,您可以为该事件分配一个函数,因此,当触发事件时,该函数将被执行。在添加事件侦听器时,如何创建值的副本?它必须是静态的,因为将创建许多按钮。脚本正确时,将向b而不是a发出警报,因为当用户单击时,foo已经有了b值;使用addEventListener可以为该事件分配一个函数,因此当触发该事件时,该函数将被执行