setInterval () не остановится, если его вызовут дважды - PullRequest
0 голосов
/ 30 апреля 2011

Я пытаюсь сделать выдвижные панели, но вот упрощенный пример проблемы, с которой я сталкиваюсь.

myCount = document.getElementById("counter")
myCount.onclick = startCount;
count = 0;

function startCount() { 
    timer = setInterval("countToTen()", 200);   
}

function countToTen() {

    count++;
    myCount.innerHTML = count;

    if (count >= 10) {
        clearInterval(timer);
    }
}

Это прекрасно работает, если вы нажмете один раз.Если вы дважды щелкнете (а мы не можем доверять пользователям кликать только тогда, когда они должны), то счетчик будет работать вечно.Я думаю, что два таймера были сделаны, но Firebug показывает таймер, чтобы всегда иметь один и тот же идентификатор.Итак, как правильно использовать clearInterval, когда setInterval вызывается дважды?

1 Ответ

6 голосов
/ 30 апреля 2011
var timer;
function startCount() { 
    if (!timer) {
        timer = setInterval(countToTen, 200);
    }
}
...