用事件监听器解析数据?

时间:2013-02-17 07:06:30

标签: javascript

有没有办法从事件监听器解析数据到函数?

我有这个:

div.addEventListener('mousedown',run(id),false);

function run(e,id){
   console.log(id);
}

事情就是马上执行。另一个问题是 - 如果我想解析变量id,并且run函数接收e事件,你如何解析其他任何东西= /它有点令人困惑找出e的顺序(在你想要解析的指定变量之前或之后)

到目前为止,当前的工作是将id分配给窗口,因此它基本上是全局的......但我想知道是否可以通过事件进行解析?

2 个答案:

答案 0 :(得分:0)

一种方法是创建一个新的侦听器函数,其中id变量已经绑定到您想要的值,如下所示:

function newListener(id) {
    var listener = function(e) {
        console.log(id);
    }
    return listener;
}
div.addEventListener('mousedown',newListener(id),false);

newListener(id)定义了一个新函数,其中id变量当时具有的值在该函数内可用。然后,当按下鼠标按钮时,javascript环境将调用 函数。

答案 1 :(得分:0)

事件处理程序不直接接受参数,您正在调用函数run(id),而不是传递处理程序,这是您传递它的方式(使用匿名函数)

https://developer.mozilla.org/en/docs/DOM/element.addEventListener

div.addEventListener('mousedown',function(e){
  doSomething(id);
},false);

function doSomething(id){
  console.log(id);
}