Глюк в скрипте таймера

Тема в разделе "JavaScript", создана пользователем vave, 25 июн 2018.

  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    424
    Симпатии:
    16
    HTML:
    <script>
    
          
                $(function(){
                    countDown = function(){
                        var currentDate = Math.round(new Date() / 1000);
    
                        var clock = $('.clock').FlipClock({
                            language: 'ru',
                            countdown: true,
                            callbacks: {
                                init: function() {
                                    //store end date If it's not yet in cookies
                                    if(!$.cookie('endDate_1')){
                                        // end date = current date + 1 minutes
                                        var endDate_1 = Date.now() + 197*57*1000;
    
    
                                        // store end date in cookies
                                        $.cookie('endDate_1', Math.round(endDate_1 / 1000));
                                    }
                                },
                                interval: function () {
                                    var currentDate = Math.round(new Date() / 1000);
                                    var time = clock.getTime().time;
                                },
                                stop: function() {
                               $.removeCookie('endDate_1');
                              countDown(); //launch countdown function
                                },
                            }
                        });
    
                        // counter will be in first 1 min if the user refresh the page the counter will be the difference between current and end Date, so like this counter can continue the countdown normally in case of refresh.
                        var counter = $.cookie('endDate_1')-currentDate;
    
                        clock.setTime(counter);
                        clock.setCountdown(true);
    
                           clock.start();
                       }
    
                    //reset button
                       $('#reset').click(function(){
                        $.removeCookie('endDate_1'); //removing end date from cookies
                        countDown(); //launch countdown function
                    });
                  
                    //Lanching countDown function on ready
                    countDown();
                   });
            </script>
    Когда время на таймере заканчивается, происходит такая вот фигня, но иногда начинается заново. Как сделать так, что бы этого глюка не возникало?[​IMG]
     
  2. RORC

    RORC

    Регистр.:
    14 июн 2013
    Сообщения:
    299
    Симпатии:
    103
    с данным скриптом очень много проблем, он давно не обновляется.
    Похоже на ваш случай https://github.com/objectivehtml/FlipClock/pull/291
    предложено изменение, но не было принято в скрипт.
     
  3. Absolute

    Absolute Крокодил ;)

    Регистр.:
    9 авг 2009
    Сообщения:
    480
    Симпатии:
    320
    Вероятнее всего в counter попадает отрицательное число. Вот здесь:
    Код:
    var counter = $.cookie('endDate_1')-currentDate;
    Можно попробовать поступить так:
    Код:
    var counter = $.cookie('endDate_1')-currentDate;
    counter = counter < 0 ? 0 : counter;
    А чтобы заново не начинался верятно нужно в каллбэке ивента stop выпилить:
    Код:
    countDown(); //launch countdown function
     
    vave нравится это.
  4. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    424
    Симпатии:
    16
    Пусть начинается заново.
    Изменения в первую строку внес, вроде счетчик закрутился, посмотрю что будет по его окончанию.