【问题标题】:Having trouble accessing event handler访问事件处理程序时遇到问题
【发布时间】:2012-05-14 16:44:21
【问题描述】:

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

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

帮助?

【问题讨论】:

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


    【解决方案1】:

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

    canvas.addEventListener('mousemove',traceMouse);
    

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

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

    【讨论】:

      猜你喜欢
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      相关资源
      最近更新 更多