由另一个函数触发的函数如何获得鼠标的位置?这是我的代码:
function myFunction(e){
setTimeout(function(){
if(isMouseDown == true){
mouseX = e.clientX;
mouseY = e.clientY;
document.getElementById('myElement').innerHTML = mouseX + ' , ' + mouseY;
myFunction(event);
} else {}
}, 100);
}
这样做是为了在点击时显示坐标。如果isMouseDown == true
,我需要它每100毫秒显示一次。
由于
答案 0 :(得分:4)
在Javascript中无法使用随机Javascript函数来获取鼠标位置。当前鼠标位置仅来自鼠标相关事件的事件对象。因此,如果要跟踪鼠标位置,则可以为mousemove
事件注册事件处理程序,为mousedown
和mouseup
注册事件处理程序以跟踪按钮状态。
如果您只想显示100毫秒的鼠标位置,那么您可以设置一个计时器,使其仅显示常用,但您需要在mousemove事件处理程序中跟踪当前鼠标位置。 / p>
这是一个简单的代码示例:
var lastMouseX = 0, lastMouseY = 0;
document.addEventListener("mousemove", function(e) {
lastMouseX = e.clientX;
lastMouseY = e.clientY;
});
var mouseTimer;
document.addEventListener("mousedown", function() {
if (!mouseTimer) {
mouseTimer = setInterval(function() {
document.getElementById("x").innerHTML = lastMouseX;
document.getElementById("y").innerHTML = lastMouseY;
}, 100);
}
});
document.addEventListener("mouseup", function() {
clearInterval(mouseTimer);
mouseTimer = null;
});

<div id="x"></div>
<div id="y"></div>
&#13;
答案 1 :(得分:0)
您尝试实现的目标有点模糊,但如果您使用setTimeout()
,则不会定期举办活动。听起来你正在寻找setInterval()
。请参阅以下示例:
var mouseX = 0;
var mouseY = 0;
var isMouseDown = true;
document.onmousemove = function(e){
mouseX = e.pageX;
mouseY = e.pageY;
}
setInterval("myFunction()", 100);
function myFunction(){
if(isMouseDown) {
document.getElementById('myElement').innerHTML = mouseX + ' , ' + mouseY;
}
}
&#13;
<div id="myElement"></div>
&#13;