Javascript 鼠标单击x和y跳线显示空值-单击事件处理

Javascript 鼠标单击x和y跳线显示空值-单击事件处理,javascript,onclick,event-handling,Javascript,Onclick,Event Handling,尝试显示鼠标单击的x和y值。问题是:我总是得到0,0。我认为脚本没有检测到属性event.currentTarget 第一个函数计算父元素的相对值并进行减法,即填充、边框和滚动。 // get the position of click - function getPosition(el) {   var xPosition = 0;   var yPosition = 0;     while (el) {     if (el.nodeName == "BODY") {       //

尝试显示鼠标单击的x和y值。问题是:我总是得到0,0。我认为脚本没有检测到属性
event.currentTarget

第一个函数计算父元素的相对值并进行减法,即填充、边框和滚动。

// get the position of click - 
function getPosition(el) {
  var xPosition = 0;
  var yPosition = 0;
 
  while (el) {
    if (el.nodeName == "BODY") {
      // deal with browser quirks with body/window/document and page scroll
      var xScrollPos = el.scrollLeft || document.documentElement.scrollLeft;
      var yScrollPos = el.scrollTop || document.documentElement.scrollTop;
 
      xPosition += (el.offsetLeft - xScrollPos + el.clientLeft);
      yPosition += (el.offsetTop - yScrollPos + el.clientTop);
    } else {
      xPosition += (el.offsetLeft - el.scrollLeft + el.clientLeft);
      yPosition += (el.offsetTop - el.scrollTop + el.clientTop);
    }
 
    el = el.offsetParent;
  }
  return {
    x: xPosition,
    y: yPosition,
    a: "hahah",
  };
}

// Set up event handlers according to standards
window.addEventListener("load", function(){
  document.addEventListener("click", handleClick);
});

function handleClick(event, x, y) {
    var el = event.CurrentTarget;
    posOb = getPosition(event.CurrentTarget);
 alert("x:" + posOb.x + ", y:" + posOb.y);
}

所以说得很清楚,你不是想得到点击本身的坐标,而是想得到被点击元素的左上角?或(您没有使用
事件
对象中的坐标,因此…)我试图获取单击x和y的坐标,而不是元素的角。你能解释一下不使用事件对象的跳线是什么意思吗。JST的新特性为您提供了单击发生的坐标,但您没有在任何地方使用这些特性,您只使用
event.currentTarget
——它应该有一个小写的“c”(您使用大写的“c”可能是您总是得到(0,0)的原因,因为大写的“c”
.CurrentTarget
未定义)。您想查看
event.screenX
event.screenY
event.clientX
,以及
event.clientY
。将currentTarget更改为小写仅显示NaN值。不起作用。关于clientX和clientY,这些属性是否返回元素的左上角坐标,即x和y相对于父容器的相对值,而不是相对于屏幕的相对值?是的,听起来不错。(我没有检查
getPosition()
函数中的计算是否正确,但从一般意义上说,这就是它应该做的。)因此,要明确的是,您不是在尝试获取单击本身的坐标,而是在尝试获取被单击元素的左上角?或(您没有使用
事件
对象中的坐标,因此…)我试图获取单击x和y的坐标,而不是元素的角。你能解释一下不使用事件对象的跳线是什么意思吗。JST的新特性为您提供了单击发生的坐标,但您没有在任何地方使用这些特性,您只使用
event.currentTarget
——它应该有一个小写的“c”(您使用大写的“c”可能是您总是得到(0,0)的原因,因为大写的“c”
.CurrentTarget
未定义)。您想查看
event.screenX
event.screenY
event.clientX
,以及
event.clientY
。将currentTarget更改为小写仅显示NaN值。不起作用。关于clientX和clientY,这些属性是否返回元素的左上角坐标,即x和y相对于父容器的相对值,而不是相对于屏幕的相对值?是的,听起来不错。(我没有做任何努力来检查
getPosition()
函数中的计算是否正确,但在一般意义上,这就是它应该做的。)