You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

学习JavaScript DOM:鼠标坐标无法显示,请求错误排查

解决鼠标坐标无法显示的问题

嘿,我瞅了你的代码,很快就揪出了几个导致坐标没法正常显示的小问题,咱们一个个来修正:

问题1:类选择器漏了关键的点号(.)

你用querySelector获取.result元素时,写成了document.querySelector("result")和const ANS = document.querySelector("result");——这里的result是类名,必须加上.才能让浏览器识别到是选中类元素,不然它会误以为你要找<result>这种不存在的标签。

问题2:事件绑定的对象和类型搞错了

你现在把坐标显示的函数绑定到了.result元素的点击事件上,但你要的是在.coordinateBox里移动鼠标时显示坐标啊!所以得给RECT(也就是.coordinateBox)绑定mousemove事件,而不是给结果框绑点击事件。

修正后的完整代码

HTML

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>MouseEvent</title>
    <link rel="stylesheet" href="style.css">
</head> 
<body> 
    <h1 onmouseover="style.color='red'" onmouseout="style.color='black'">Mouse over this text</h1>
    <div class="coordinateBox"></div>
    <div class="result"></div>
    <script src="script.js"></script>
</body> 
</html>

CSS

.coordinateBox { 
    width: 400px; 
    height: 200px; 
    border: 2px solid black; 
}

JavaScript

const RECT = document.querySelector(".coordinateBox"); 
const ANS = document.querySelector(".result"); 

function mouseCoordinate(e) { 
    var x = e.clientX; 
    var y = e.clientY; 
    var coo = "X : " + x + " Y : " + y; 
    ANS.innerHTML = coo; // 直接用提前获取的ANS元素,不用重复调用querySelector
} 

if(RECT){ 
    RECT.addEventListener('mousemove', mouseCoordinate); // 用你正在学习的addEventListener绑定鼠标移动事件
}

顺便提个小优化:既然已经提前获取了ANS元素,函数里就不用再重复querySelector了,直接用变量更高效。而且用addEventListener绑定事件确实比传统的onxxx方式更灵活,正好贴合你现在的学习内容~

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:56:45