Javascript:访问事件处理程序时遇到问题

时间:2012-05-05 09:50:34

标签: javascript-events event-handling parameter-passing

因此,从我查看的所有地方读到的内容,这就是我访问事件处理程序属性的方式:

canvas.addEventListener('onmousemove', traceMouse(e));  //Handler gets passed in as 'e'

function traceMouse(e) {   //Then I could just use it like a normal parameter, right?
    mouseX = e.clientX;
    mouseY = e.clientY;
    }

不幸的是,firebug坚持认为e没有定义。我完全不知道我哪里出错了,我可能再次犯了一些愚蠢的错误,而且我已经准备好咬掉自己的头了。

帮助?

1 个答案:

答案 0 :(得分:0)

实际上,在addEventListener中,要传递的第二个参数是在触发事件时要调用的函数的名称。现在,你正在调用函数&传递e(未定义)。所以,代码应该是

canvas.addEventListener('mousemove',traceMouse);

事件对象将通过浏览器传递,因此您将能够获得clientX&收率

在任何情况下,您都需要将参数传递给函数,您可以使用闭包。 这是一个例子。 http://jsfiddle.net/parth1403/fVakB/