在Javascript中的setInterval()上捕获鼠标位置

在Javascript中的setInterval()上捕获鼠标位置,javascript,javascript-events,mouseevent,Javascript,Javascript Events,Mouseevent,我有一个javascript函数,根据鼠标位置移动一个div。此函数在setInterval()函数上设置并每秒执行一次。我需要像这样捕捉鼠标位置: function mousemov() { document.getElementById("myDiv").style.left = Event.clientX; //don't work } window.onload = function() { setInterval("mousemov()",1000); } Ps:我不能使用

我有一个javascript函数,根据鼠标位置移动一个div。此函数在setInterval()函数上设置并每秒执行一次。我需要像这样捕捉鼠标位置:

function mousemov() {
  document.getElementById("myDiv").style.left = Event.clientX; //don't work
}

window.onload = function() {
  setInterval("mousemov()",1000);
}
Ps:我不能使用mousemove事件,因为即使鼠标停止,也必须执行该函数


谢谢你的帮助

嗯,如果您收听文档的鼠标移动并保存其位置,那么,只要您愿意,例如,在您的情况下,每秒钟您就有最新注册的鼠标位置

这是一个jquery示例

$(document).ready(function()
 {
  $().mousemove(function(e)
   {
       window.mouseX = e.pageX;
       window.mouseY = e.pageY;
  });
});
你的mousemove函数是

function mousemov() { 
    document.getElementById("myDiv").style.left = window.mouseX;
}

您可以访问事件对象的唯一时间是在执行事件处理程序期间。因此,您需要做的是在文档上创建OnMouseMove事件,并将鼠标坐标存储在全局可访问的对象中。然后,您可以从脚本中的任何其他位置访问这些值,以确定鼠标位置

下面是一个示例(您没有使用jQuery,所以这是直接的DOM代码):


我应该注意,clientX和clientY不考虑滚动。您需要检索滚动偏移量并将其应用于返回的值。

为什么不使用mousemove事件?如果鼠标不移动,您并不想更改
div
的坐标。仅在mousemove上更新坐标。如果鼠标停止,您不能使用mousemove事件上的上一个值吗?+1。您可能需要解释,除非捕获事件,否则不会创建事件对象。因此,他基本上需要做的是捕获mousemove事件并将鼠标位置存储在全局可访问的位置,然后在interval函数中使用该值。此外,
setInterval(“functionName()”,1000)
不是一个好的做法(类似于
eval()
)。选择
setInterval(mousemov,1000)
setInterval(function(){mousemove()},1000)
FYI
clientX
/
clientY
排除任何可能存在的文档滚动。感谢Chetan和CrecentFresh-我已更新了答案以反映您的评论。
document.onmousemove = function(e) {
    var event = e || window.event;
    window.mouseX = event.clientX;
    window.mouseY = event.clientY;
}

function mousemov() {
    document.getElementById("myDiv").style.left = window.mouseX;
}

window.onload = function() {
    setInterval(mousemov, 1000);
}