簡體   English   中英

JavaScript setTimeout()無法觸發自身

[英]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事件以及mousedownmouseup注冊事件處理程序,以跟蹤按鈕狀態。

如果您只想顯示鼠標位置(每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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM