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 に答える