You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

JavaScript添加事件管理器失败,控制台报ReferenceError: event is not defined

问题排查与解决方案

嘿,我来帮你捋捋这个问题~你碰到的ReferenceError: event is not defined其实是两个小细节出了错,咱们逐个拆解:

错误原因

  • 事件绑定方式不对:你在addEventListener里写的是myFunction(event),这会立刻执行这个函数,而不是把它作为鼠标移动事件的回调函数绑定上去。这时候event变量根本没被定义,自然就抛出错误了。正确的做法是只传递函数本身的引用(也就是只写myFunction,不加括号和参数),当事件触发时,浏览器会自动把event对象传给回调函数。
  • DOM方法拼写错误:代码里的document.getElementByTagName少了个s,正确的方法名是document.getElementsByTagName(因为这个方法返回的是元素集合,所以是复数形式)。

修正后的代码

// 正确绑定事件回调,传递函数引用而非直接调用
document.getElementsByTagName('div')[0].addEventListener("mousemove", myFunction);

function myFunction(event) {
  var x = event.pageX;
  var y = event.pageY;
  var coor = "Coordinates: (" + x + "," + y + ")";
  // 修正方法名的拼写错误
  document.getElementsByTagName('p')[0].textContent = coor;
}

对应的HTML部分保持原样即可:

<div>
  <p></p>
</div>

这样修改后,当你把鼠标移到div元素上时,就能正常显示实时坐标啦~

内容的提问来源于stack exchange,提问作者PostMaloneM3m3r

火山引擎 最新活动