By Hoshino

0

setTimeoutの削除【JavaScript】

Categories : JavaScript

ボタンを押したら3秒後にアラートを出すなんてブロックを用意します。

ボタン1

コードはこんな感じ。jQuery使ってます。

$(‘#btn’).click(function(){
        setTimeout(function(){
                alert(‘あっきぃだよ!’);
        }, 1000 * 3);
});

setTimeoutで3秒後にアラートだぜ。いい感じだぜ。と思いきや、
これだとボタンを連打すると、その数だけアラートが出てしまいます。

それは良くないことが起こりそうなので、clearTimeoutで連打を阻止しましょう。

var timer;
$(‘#btn’).click(function(){
        clearTimeout(timer);
        timer = setTimeout(function(){
                alert(‘あっきぃだよ!’);
        }, 1000 * 3);
});

ボタン2

これで最後にボタンを押してから3秒後にアラートになります。

もしも、
最初にボタンを押してから3秒後にアラートにしたい場合は、こんな感じに。

var timer;
$(‘#btn’).click(function(){
        if(!timer) {
                timer = setTimeout(function(){
                        alert(‘あっきぃだよ!’);
                        timer = null;
                }, 1000 * 3);
        }
});

ボタン3

timerになんか入っているかどうかで判定します。

ばっちぐー