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可以为该事件分配一个函数,因此当触发该事件时,该函数将被执行