2013-08-18 1 views
0

Я пытаюсь создать сценарий jquery, который отсчитывает с 20 секунд, когда вы вызываете функцию, а затем перезагружаетесь, когда она заканчивается. Есть ли способ сделать это?Сбой таймера обратного отсчета Jquery, когда функция называется

+0

проверить документацию js для * setTimeout() * функция –

+0

Пожалуйста, будьте более конкретным. Считайте, что? Внутренний или видимый счетчик? И что нужно сбросить? –

+0

Прости, да. Видимый счетчик, отображаемый в пределах «#div span», и таймер должен быть сброшен, когда он закончил отсчет. –

ответ

0

Это считается плохой практикой использования setInterval, так что лучше использовать SetTimeout так:

var timer = 20 * 1000; 

function loop() { 
    if (timer > 0) { 
    $('#countdown').html(timer/1000); 
    timer -= 1000; 
    setTimeout(loop, 1000); 
    } else { 
    timer = 20 * 1000; 
    $('#countdown').html(timer/1000); 
    } 
} 

loop(); 
0
(function($){ 
    /// initialize the variables 
    var interval, 
     $domElementThatContainsTheCountdown = $('.countdown'), 
     count = 20; 
    function start() { 
     /// if the timer is already running, do nothing 
     if(interval) return; 

     $domElementThatContainsTheCountdown.text(count); 
     /// set an interval on 1000ms (= 1 second) 
     setInterval(function() { 

      $domElementThatContainsTheCountdown.text(count); 
      count -= 1; 

      /// if the countdown has finished 
      if(count === 0) { 
       /// reset count 
       count = 20; 
       $domElementThatContainsTheCountdown.text(count); 
       /// clear the interval 
       clearInterval(interval); 
      } 
     }, 1000); 
    } 
}(jQuery)); 
0

Попробуйте

var total = 20 
var counter = 20 
var timer = setInterval(function() { 
    $('#Msg').text(counter--); 
    if (counter == -1) { 
     //clearInterval(timer); 
     $('#Msg').text(total); 
     counter=20; 
    } 
}, 1000); 

This should work for below html 
<span id="Msg">20</span> 
0

попробовать следующий

var timeVar = '', max = 20, starter = 0; 

$("#btnStart").on("click",function(){ 
timer(); 
}); 

function set(){ 
    if(max != starter){       
     $(".timer").text((max).toString()); 
     max--; 

     if(max == 0){ 
      max = 20; 
     } 
    }    
} 

function timer(){ 
    timeVar = setInterval(set,500);   
} 

рабочий скрипка здесь: http://jsfiddle.net/3KLtc/1/

Надеюсь, это поможет.

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

  • Нет связанных вопросов^_^