2015-09-04 162 views
0

所以,如果你按住一個鍵,它會:不斷執行功能

  1. 首先輸入密鑰
  2. 等待500ms
  3. 重複輸入鍵

或者像這樣:

a   a a a a a .... 
|   |   | 
0   500  1000 

我想執行一個代碼,每x毫秒執行一個函數。

目前,我有這樣的:

var flag = true; 
document.body.addEventListener("keydown", function(){ 
    if(flag){ 
     flag = false; 
     //code 
     setTimeOut(function(){flag = true}, 500); 
    } 
}) 

但很明顯,僅適用於500ms以上的間隔。如果我想要一個間隔,我該怎麼辦?

+0

是否當您設置超時你想要的事情發生(或啓動的時間間隔)的'keydown'事件,而不是等待'keypress'? –

+0

@WanderNauta對不起,這是重新鍵入我的代碼片段 –

+0

@WanderNauta的錯誤,但'keydown'也不起作用。 –

回答

0

這將運行蜱功能每100ms,而一鍵被按下:

var intervalID; 

function tick() { 
    // code, for example: 
    document.body.innerHTML += "."; 
} 

document.addEventListener("keydown", function(){ 
    if (!intervalID) intervalID = setInterval(tick, 100); 
}); 

document.addEventListener("keyup", function(){ 
    clearInterval(intervalID); 
    intervalID = undefined; 
}); 

如果你想永遠不斷地執行該功能,你不需要保持間隔ID和你不需要keyup處理程序。

https://jsfiddle.net/thsk1dpp/

+0

哇!我從來沒有想過這個!今天學到了新東西,謝謝! :d –