Javascript 将元素移动到光标位置会被记录,但不会应用位置更改

Javascript 将元素移动到光标位置会被记录,但不会应用位置更改,javascript,oop,settimeout,Javascript,Oop,Settimeout,我有一个具有可链接函数的对象,它可以正常工作。单击三角形本身会触发动画并相应地转换元素。 现在我有了另一个函数,可以将三角形转换为当前鼠标位置,js如下所示: moveToTarget: function(e) { var mouseX = 0, mouseY = 0, xp = 0, yp = 0; xp += (mouseX - xp) / 12; yp += (mouseY - yp) / 12; block.style.left = xp + 'px'; block.style.top

我有一个具有可链接函数的对象,它可以正常工作。单击三角形本身会触发动画并相应地转换元素。 现在我有了另一个函数,可以将三角形转换为当前鼠标位置,js如下所示:

moveToTarget: function(e) {
var mouseX = 0, 
mouseY = 0,
xp = 0,
yp = 0;
xp += (mouseX - xp) / 12;
yp += (mouseY - yp) / 12;
block.style.left = xp + 'px';
block.style.top = yp + 'px';
setTimeout(moveToTarget,30);

return this;
请记住,这只是对象animateBlock上的方法之一,我不确定是否必须在该SetTimeout中将其称为animateBlock.moveToTarget

这是调用:

container.addEventListener("click", function(e){
console.log(e.pageY); // this log the Y position
animateBlock.moveToTarget;});
我并没有得到JS lint错误,并没有在控制台中抛出运行时错误,它只是因为某种原因并没有应用翻译,我在这里缺少了什么

链接:


这是一个工作代码笔:

我不得不做一些改变,因此我道歉:

  • 您在调用moveToTarget()时没有使用其参数
    事件
  • moveToTarget()函数没有执行任何操作。您没有使用
    事件
    ,因此值始终为0
  • 我去掉了保证金:50%0;从三角形开始,因为它弄乱了它的X位置(使使用translateX()变得困难)
  • 我将“px”直接放在函数中,因此参数现在只是数字
  • 新函数moveXAndY()可以同时修改translateX()和translateY()(否则它们会相互覆盖)
  • 代码有点乱,我不习惯在代码笔上编辑,所以对此表示歉意

在本例中:
xp+=(mouseX-xp)/12
xp
计算为
0
。与yp相同,也许这就是原因。另外,
animateBlock.moveToTarget;})
没有调用
moveToTarget
。我已经将mouxeX更改为e.pageX等,仍然没有运气。我意外删除了初始化。添加了animateBlock.moveToTarget();还是不走运。我会试着得到block div的位置,然后从那里开始计算。啊,谢谢,那一个比我的好得多。是的,(e)不在那里。那么,为了确定,e.pageX返回的是一个数字,而不是字符串?谢谢