Пытаясь начать обратный отсчет снова, когда время истекло

Я использую jQuery.countdown и пытаюсь сделать так, чтобы после завершения обратного отсчета он возобновлялся с другой датой, которую я хочу перезапускать каждую пятницу. поэтому он ведет обратный отсчет всю неделю, и когда он попадает в пятницу, он выдает сообщение, затем ждет некоторое время, а затем перезапускается. Я знаю, как сделать первый отсчет, но у меня возникли проблемы с запуском обратного отсчета. Не знаю, что делать с установкой флаговых переменных или как использовать цикл в этом случае. Вот соответствующий фрагмент кода, который не работает.

Я поставил var again = false (вы не видите этого во фрагменте, который я понимаю) в глобальном контексте. затем проверьте, не является ли его ложным, и если новая дата <, то ул. str обновляется в функции, которая говорит, что делать, когда закончите. В моем оригинальном коде я имел str установить первую будущую дату и поместить это в качестве параметра в countdown method Я просто положил в "2015/7/27 23:49:10" для тестирования. Как я могу установить таймер снова? Я думаю, что мне нужен какой-то петлевой механизм.

    if(again == false && new Date() < new Date(str)){
            $('#clock').countdown("2015/7/27 23:49:10") .on('update.countdown', function(event) {
              var format = '%D days %H hours %M mminutes %S seconds';
                   $(this).html(event.strftime(format));
                      again = true
                     })
                     .on('finish.countdown', function(event) {
                            if(again == true){
                                 $(this).html('This offer has expired!');
                                      str = "2015/7/27 23:49:39"
                                     window.setTimeout(function(){again = false},5000) 
                                     again = false;
                                     console.log(str)  
                            }


                     })                        
       }

1 ответ

Решение

Внутри вашего setTimeout Вы можете повторно инициализировать его. У вас есть то, что называется event.elapsed чтобы проверить, истекло ли время или нет, и не будет никакой необходимости finish.countdown, Пример с сайта

РАБОЧАЯ ДЕМО

$(document).ready(function(){
    var date='2015/07/29 12:29:00';//change this to very near time and elapse and check it
    var format='%D days %H hours %M minutes %S seconds';                
    $('#clock').countdown(date)
    .on('update.countdown', function(event){
         $(this).html(event.strftime(format));
    }).on('finish.countdown',function(event){
           var ev=event;
           var ctrl=$(this);
           $(ctrl).html('This offer has expired!');
           window.setTimeout(function(){
              $('#clock').countdown('2015/12/20 12:34:56'); //change this date accordingly
           },5000)
    })
});
Другие вопросы по тегам