Javascript 多个document.onmousemove事件不起作用

Javascript 多个document.onmousemove事件不起作用,javascript,events,mousemove,Javascript,Events,Mousemove,我想要一些关于javascript项目的帮助。我想做的是,有两个函数可以在移动鼠标时启动,但每次只有一个可以工作 例如,如果我这样做 var mouseX; var mouseY; document.onmousemove = captureMouse; document.onmousemove = function(){console.log("check");} function captureMouse(ev){ ev = ev || window.event; var mousePos

我想要一些关于javascript项目的帮助。我想做的是,有两个函数可以在移动鼠标时启动,但每次只有一个可以工作

例如,如果我这样做

var mouseX;
var mouseY;

document.onmousemove = captureMouse;
document.onmousemove = function(){console.log("check");}
function captureMouse(ev){
ev = ev || window.event;
var mousePos= mouseCoords(ev);
mouseX=mousePos.x;
mouseY=mousePos.y;
document.getElementById("coordinput").value=mouseX;
return mousePos;}

function mouseCoords(ev){

if(ev.pageX || ev.pageY){

return {x:ev.pageX,y:ev.pageY};


}

 return{
 x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
 y:ev.clientY + document.body.scrollTop  - document.body.clientTop 
 };

}
如果删除第二个document.onmousemove,第一个会正常工作并更改输入字段的值

如果我把它放在那里,它会不断地写检查,就像它应该写的一样,这是为了调试的目的,但第一个不起作用


关于如何使多个鼠标事件工作有什么想法吗?

使用document.addEventListener'mousemove',yourCb;它允许多个处理程序使用文档;它允许多个处理程序

,因为Javascript是连续的,所以只调用分配给事件的最后一个函数。为了检查第二个函数{console.logcheck;},可以在第一个函数captureMouse内使用它;好的,谢谢你的回答。我认为每个document.onmousemove都添加了某种标志,所以当你移动鼠标时,它会同时执行这两个,而不仅仅是最后一个。问题是我想用一个不同的函数来代替console.log,所以我真的需要将它们分开,capturemouse只在那里不断更新两个坐标,因为Javascript是连续的,所以只调用分配给事件的最后一个函数。为了检查第二个函数{console.logcheck;},可以在第一个函数captureMouse内使用它;好的,谢谢你的回答。我认为每个document.onmousemove都添加了某种标志,所以当你移动鼠标时,它会同时执行这两个,而不仅仅是最后一个。问题是我想用一个不同的函数来代替console.log,所以我真的需要将它们分开,capturemouse只是在那里不断更新两个坐标这实际上似乎是可行的。如果这不是一个麻烦,你能解释一下为什么这样做,但我的代码不起作用吗?我猜document.onmousemove的工作原理类似于在html元素上设置onmousemove,所以我基本上是在覆盖它?因为smth.onmousemove-callback每次都会覆盖它。addEventListener只是在内部使用类似于smth的回调数组。这实际上似乎是可行的。如果这不是一个麻烦,请您解释一下为什么可以这样做,但我的代码不行?我猜document.onmousemove的工作原理类似于在html元素上设置onmousemove,所以我基本上是在覆盖它?因为smth.onmousemove-callback每次都会覆盖它。addEventListener只在内部使用类似smth的回调数组