在最后一次按下“G”后2秒将变量设置为true

时间:2013-03-30 18:26:48

标签: javascript jquery

标题说明了一切,我知道通过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行。

2 个答案:

答案 0 :(得分:4)

您希望将Timeout存储在变量中,并在clear触发时g_pressed()存储:

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

答案 1 :(得分: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);
}