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

Having trouble accessing event handler

本文关键字:遇到 问题 程序 事件处理 访问      更新时间:2023-09-26

从我检查的任何地方阅读的内容来看,这就是我访问事件处理程序属性的方式:

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没有定义。我完全不知道我哪里做错了,我可能又犯了一些愚蠢的错误,我准备咬掉自己的头。

帮助?

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

canvas.addEventListener('mousemove',traceMouse);

并且事件对象将由浏览器传递,因此您将能够获得clientX和Y。

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