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




