【问题标题】:event.pageX and event.pageY returning a number that can't be usedevent.pageX 和 event.pageY 返回一个不能使用的数字
【发布时间】:2014-04-13 06:59:50
【问题描述】:

我现在在使用 event.pageX 和 event.pageY 函数时遇到了一些问题。我正在尝试使用它们在相对于我的画布元素的单击事件中获取鼠标的位置。我通过这些代码行获得了相对于我的画布的位置:

var mx = e.pageX - this.xPos;
var my = e.pageY - this.yPos;

this.xPosthis.yPos是通过jQuery的offset函数得到的:

this.xPos = $("#timelines").offset().left;
this.yPos = $("#timelines").offset().top;

当我分别记录其中任何一个(e.pageX/Ythis.x/yPos)时,它们都会给我正确的数字。但是,当我在减法后记录mxmy 的结果时,它说它不是数字(NaN)。我在网上环顾四周,但没有找到任何可以解释为什么会发生这种情况的东西。我曾尝试使用Number(event.pageX/Y) 和/或Number(this.x/yPos) 显式转换它们,但这不起作用。有人有什么建议吗?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    尝试 parseFloat() 围绕任何非数字的基本变量。这会将 '1'(浮点数)变成 1(数字)

    不熟悉jQuery,但确保偏移函数末尾没有'px'?

    最后尝试触发一个警报(或 console.log,如果必须的话),其中包含给您查找和隔离问题带来麻烦的所有变量。

    【讨论】:

    • 其实试试把pageX和pageY换成clientX和clientY
    • 用 typeof 函数检查了我的变量的类型。我的减法中使用的两个值都是数字,clientX/Y 没有改变任何东西
    • 嗯。这就解释了为什么我没有启动。建议:创建一个 jsFiddle。大师们喜欢你这样做。带来更快更好的解决方案,尤其是使用健壮的代码。
    【解决方案2】:

    Nvm,我发现了这个问题。 this 的值在事件侦听器中发生变化,并且未访问正确的 xPos/yPos

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-08
      • 2016-10-06
      • 1970-01-01
      • 2018-04-20
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多