在KeyDown上不断执行函数

时间:2015-09-04 10:24:29

标签: javascript

所以,如果按住某个键,它会:

  1. 首先输入密钥
  2. 等待500ms
  3. 反复输入密钥
  4. 或者像这样:

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

    我想执行一个每隔x ms执行一次函数的代码。

    我目前有这个:

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

    但显然只适用于500ms或更多间隔。如果我想要100ms间隔,我该怎么办?

1 个答案:

答案 0 :(得分:0)

当按键关闭时,这将每100毫秒运行一次滴答功能:

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,也不需要使用密钥处理程序。

https://jsfiddle.net/thsk1dpp/