1

基本的:

ボタンをクリックすると、機能 1 が実行
されます。1 秒以内にもう一度ボタンをクリックしないと、機能 2 が実行されます。
1 秒以内にボタンをクリックすると、機能 1 が再度実行されます。
などなど…

Javascriptでこれを行うロジックがわかりません。

方法はありますか?

ありがとうございます!

4

5 に答える 5

5

時間を追跡するためにタイマーを使用する必要があります。setTimeout機能 2 を 1 秒 (1000ms) で実行するために使用できます。ただし、ボタンをもう一度クリックする場合は、タイマーを停止する必要があります。を使用してそれを行うことができますclearTimeout

コアラインは次のとおりです。

var timer;

// in button's click handler:
clearTimeout(timer);
timer = setTimeout(function2, 1000);
于 2012-08-22T21:04:43.587 に答える
3

これはそれを行う必要があります:

(function() {
    var timer = null;

    $('#button').on('click', function() {
        function1();                         // always call function1
        clearTimeout(timer);                 // clear the timer
        timer = setTimeout(function2, 1000); // run function2 1s later
    });
})();

http://jsfiddle.net/alnitak/QZRTA/を参照してください

外側の関数ブロックはtimer、グローバル変数を作成せずに変数をローカル スコープに保持する役割を果たします。

于 2012-08-22T21:09:47.827 に答える
3

私の頭の上から(これをテストしていませんが、これは私にとって最も論理的なようです):

var t = null;

$("button").click(function() {
    console.log("this is function 1");
    if (t !== null) { window.clearTimeout(t); }

    t = window.setTimeout(function() {
        console.log("and this is function 2");
    }, 1000);
});
于 2012-08-22T21:08:19.877 に答える
2

setTimeoutと の使用clearTimeout:

var t = null;
var timeoutMs = 1000; // in ms

$("#btn1").click(function (){
    func1();
    if (t !== null)
        clearTimeout(t);    
    t = setTimeout(func2, timeoutMs);
});
于 2012-08-22T21:12:12.510 に答える
0
$('button').click(function() {
    console.log('Func 1');
    clearTimeout($(this).data('throttle'));
    $(this).data('throttle', setTimeout(function() {
        console.log('Func 2');
    }, 1000));
});​

http://jsfiddle.net/dfsq/rrXWt/

于 2012-08-22T21:14:20.223 に答える