1

标题说明了一切,我知道通过 Javascript 解决这个问题的一种非常愚蠢的方法,但我想知道......是否有更聪明的方法?大概有。用户可以随心所欲地按“G”,这会调用函数g_pressed(); . jquery 中的解决方案也很好。

这是我的解决方案:

var allowed = false;
var allowed_key = 0;

function g_pressed(){
    allowed = false;
    allowed_key++;
    setTimeout('allowed_check('+allowed_key+');', 2000);
}

function allowed_check(key){
    if(key==allowed_key){
        allowed = true;
    }
}

如您所见,它有 12 行长。

4

2 回答 2

4

您想将 存储Timeout在一个变量中,clear并在g_pressed()触发时存储它:

var myTimeout;
function g_pressed(){
    clearTimeout(myTimeout);
    allowed = false;
    allowed_key++;
    myTimeout = setTimeout('allowed_check', 2000, allowed_key);
}
于 2013-03-30T18:28:59.420 回答
0

如果要发送参数,需要做一个匿名函数:

var allowed = false;
var allowed_key = 0;
function g_pressed(){
allowed = false;
allowed_key++;
setTimeout(function(allowed_key){
if(key==allowed_key){
    allowed = true;
}, 2000);
}
于 2013-03-30T18:33:18.053 回答