[英]JavaScript setTimeout() can't trigger itself
由另一個功能觸發的一個功能如何獲取鼠標的位置? 這是我的代碼:
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毫秒顯示一次。
謝謝
Javascript中沒有辦法讓隨機Javascript函數獲取鼠標位置。 當前鼠標位置僅來自與鼠標相關的事件的事件對象。 因此,如果要跟蹤鼠標位置,則可以為mousemove
事件以及mousedown
和mouseup
注冊事件處理程序,以跟蹤按鈕狀態。
如果您只想顯示鼠標位置(每100毫秒一次),則可以設置一個計時器,使其僅經常顯示一次,但是您需要在mousemove事件處理程序中跟蹤當前鼠標位置。
這是一個簡單的代碼示例:
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>
您想要實現的目標有點模糊,但是如果您使用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; } }
<div id="myElement"></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.