2013-03-04 2 views
0

Эта функция setTimeout запускается только один раз, а затем останавливается. У меня нет ошибок, поэтому я понятия не имею, почему это происходит.setTimeout счетчик не работает

count = 100; 

counter = setTimeout('timer()', 100); 

$('#reset').click(function() { 
    count = 100; 
    counter = setTimeout('timer()', 100); 
}) 

function timer() { 
    if (count <= 0) { 
     clearTimeout(counter); 
     alert('done'); 
    } 
    $('#counter').html(count); 
    count -= 1; 
} 

Я попробовал несколько различных формулировок функции SetTimeout, в том числе и setTimeout(timer(),100)setTimeout(function() { timer() }, 100)

+0

counter = setTimeout (таймер, 100); является предпочтительным синтаксисом –

ответ

0

Да, это то, что setTimeout. Он запускает код один раз.

Вы хотите использовать метод setInterval для повторного запуска кода.

0

setTimeout работает правильно, но это не то, что вы ищете. попробуйте setInterval. setInteval(function, delay)

0

setTimeout() - выполняет функцию, раз, выждав определенное количество миллисекунд.

Возможно, вы захотите пойти за setInterval(), который выполняет функцию снова и снова с заданными временными интервалами.

1

Вы должны использовать setInterval(), который повторяет вызов функции, а не setTimeout(), что делает это один раз. Кроме того, не используйте () в описании имени функции.

var count = 100; 

var counter = setInterval('timer', 100); 

$('#reset').click(function() { 
    count = 100; 
    counter = setInterval('timer', 100); 
}) 

function timer() { 
    if (count <= 0) { 
     clearInterval(counter); 
     alert('done'); 
    } 
    $('#counter').html(count); 
    count -= 1; 
} 
0

Не уверен, что вы пытаетесь достичь, и я не понимаю $ («# сброс»). Нажмите (и т.д.) конструкции. Являются ли эти JQuery?

Однако почему бы не использовать setInterval()? А затем очистить интервал таймера, когда ваше условие выполнено?

Смежные вопросы