Ответ 1
Вместо setTimeout, используйте setInterval. Он будет повторяться автоматически, пока вы не очистите интервал.
setInterval(myMethod, 5000);
function myMethod( )
{
//this will repeat every 5 seconds
//you can reset counter here
}
Я хочу создать таймер, который, когда он достигнет определенной точки, таймер сбрасывается, а затем начинается.
Прямо сейчас, у меня настроен цикл, и в качестве теста я хочу его reset после 5000 мс (5 секунд). Но счетчик идет все в порядке.
WIP Демо здесь: http://jsfiddle.net/stursby/wUHA3/
Вместо setTimeout, используйте setInterval. Он будет повторяться автоматически, пока вы не очистите интервал.
setInterval(myMethod, 5000);
function myMethod( )
{
//this will repeat every 5 seconds
//you can reset counter here
}
Я согласен с клавиатуройP, что вы, вероятно, должны использовать setInterval
вместо setTimeout
. Однако, чтобы ответить на ваш первоначальный вопрос, причина, по которой у вас возникают проблемы с таймером, связана с вашей логикой повторения. Не использовать:
var diff = (new Date().getTime() - start) - time;
window.setTimeout(instance, (100 - diff));
Вам не нужно проверять время выполнения (что я предполагаю - это то, что вы пытались сделать с diff
). Просто предположите, что это незначительно и используйте:
setTimeout(instance, 100);
И ваша проблема решена, как вы можете видеть в этот jsFiddle.
попробуйте эту ссылку простой javasvript jquery timer ее работа отлично и у нее есть бесплатный источник