使用JavaScript记录鼠标指针坐标时出现错误
解决鼠标坐标获取与setInterval配合的问题
你的代码报错核心原因是:event变量仅在事件触发的回调函数内部存在(比如鼠标点击、移动这类事件的处理函数),而setInterval的回调不属于事件上下文,根本找不到这个变量,所以会提示无法识别。
正确的做法是把鼠标坐标先存起来,再用setInterval读取存储的值,具体步骤如下:
- 声明变量存储当前鼠标的X、Y坐标
- 通过
addEventListener监听mousemove事件,每次鼠标移动时更新坐标变量 - 在
setInterval的回调里读取这个变量,就能拿到实时坐标
完整代码示例:
// 初始化鼠标坐标变量 let mouseX = 0; let mouseY = 0; // 监听鼠标移动,实时更新坐标 document.addEventListener('mousemove', function(e) { mouseX = e.pageX; mouseY = e.pageY; }); // 定时输出坐标(建议调整间隔,1ms太频繁会占用性能) setInterval(function() { console.log(`鼠标X坐标:${mouseX},Y坐标:${mouseY}`); }, 100);
补充说明:
- 如果你的需求只是记录鼠标移动时的坐标,其实不需要
setInterval,直接在mousemove的回调里处理即可;只有当需要定时采样坐标(比如每隔一段时间记录一次当前位置)时,才需要配合setInterval - 不要用1ms的间隔,这会让浏览器高频执行函数,严重占用性能,根据实际需求调整到100ms或更长即可
内容的提问来源于stack exchange,提问作者Wild and Rare
相关产品推荐
相关产品推荐

