[英]I keep getting the error message Cannot read property 'clientX' of undefined when trying to get the mouse coordinates
[英]Why do I keep getting undefined when using clientx and clienty property?
var box=document.getElementById("box");
var display=document.getElementById("display");/*to display clientX result*/
var x=box.clientX;
box.addEventListener("click", show);
function show(){
display.innerHTML=x;
}
我觉得我的头脑里有一些简单的东西让我看不清楚
属性是clientLeft
和clientTop
,而不是clientX
和clientY
。 请参阅Element接口 。 所以
var x=box.clientLeft;
// -------------^^^^
另外,这可能是也可能不是问题,取决于你正在做什么,这条线
var x=box.clientX;
从运行时的box
获取clientX
的值 ,然后存储该值 。 x
和box.clientX
之间没有持续的连接。 因此,当点击后出现,并show
被调用时,显示值如前所述 ,当var x=box.clientX;
跑了。 根据具体情况,即使您将其设置为clientLeft
,也可能会获得0
而不是有效值(如果您在初始加载页面时正在读取它,那么页面可能尚未布局)。 同样,根据您正在做的事情,您可能需要等待并在发生单击时查找box.clientLeft
。 例如:
var box = document.getElementById("box");
var display = document.getElementById("display");
box.addEventListener("click", show);
function show(){
display.innerHTML = box.clientLeft;
}
如果要在box-element中获取鼠标单击的x位置,可以借助click-event提供的属性来实现此目的。
let box = document.getElementById("box");
let display = document.getElementById("display");
function showMouseX(event){
display.innerHTML = event.clientX;
}
box.addEventListener("click", showMouseX);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.