Простой ответ заключается в том, что setTimeout
вызывается дважды, запускается timerCountdown()
один раз два раза по отдельности и непрерывно устанавливается два setTimeout
идентификатора.
Это было бы то, что вы хотите:
var x = 100;
var t = 0;
function timerCountdown()
{
if (t == 0) t = setInterval(timerCountdown, 1000);
document.getElementById('timer1').value=x;
x--;
if (x < 0)
{
document.getElementById('timer1').value='Done!';
clearTimeout(t);
ticker = 0;
}
}
function stopCounter()
{
clearTimeout(t);
t = 0;
x++;
}
setInterval
гораздо больше подходит для таймеров обратного отсчета, и вещей, которые вам нужно запускать непрерывно, поскольку setTimeout
запускается только один раз, и вам нужно продолжать вызывать его.
Редактировать: Это исправляет первоначальный быстрый запуск таймера в Firefox.
Удалите обработчик из <body onload=
и добавьте его в конец приведенного выше блока скрипта:
t = setInterval(timerCountdown, 1000);