@RainoYT

Почему отображается NaN вместо цифр в таймере JS в Safari?

Возникла проблема. Создал JS таймер. Во всех браузерах корректно работает, а Safari вместо цифр пишет NaN. В консоли ошибок нет. Прикладываю код таймера
<script>
        var YearS = <? echo $yy; ?>;
        var MonthS = <? echo $mm; ?>;
        var DayS = <? echo $dd; ?>;
        var HourS = <? echo $hh; ?>;
        var MinS = <? echo $mi; ?>;

        function updatecountdown() {
            var now = new Date();
            timeN = (now.getMinutes()) + now.getHours() + now.getDate() + now.getMonth() + now.getFullYear();
            time = (MinS-1) + HourS + DayS + MonthS + YearS;
                if(time == timeN){
                    window.location.reload();
                }
            setTimeout(updatecountdown, 1000);
        }
        updatecountdown();

        function getTimeRemaining(endtime) {
          var t = Date.parse(endtime) - Date.parse(new Date());
          var seconds = Math.floor((t / 1000) % 60);
          var minutes = Math.floor((t / 1000 / 60) % 60);
          var hours = Math.floor((t / (1000 * 60 * 60)) % 24);
          var days = Math.floor(t / (1000 * 60 * 60 * 24));
          return {
            'total': t,
            'days': days,
            'hours': hours,
            'minutes': minutes,
            'seconds': seconds
          };
        }

        function initializeClock(id, endtime) {
          var clock = document.getElementById(id);
          var daysSpan = clock.querySelector('.days');
          var hoursSpan = clock.querySelector('.hours');
          var minutesSpan = clock.querySelector('.minutes');
          var secondsSpan = clock.querySelector('.seconds');

          function updateClock() {
            var t = getTimeRemaining(endtime);

            daysSpan.innerHTML = t.days;
            hoursSpan.innerHTML = ('0' + t.hours).slice(-2);
            minutesSpan.innerHTML = ('0' + t.minutes).slice(-2);
            secondsSpan.innerHTML = ('0' + t.seconds).slice(-2);

            if (t.total <= 0) {
              clearInterval(timeinterval);
            }
          }

          updateClock();
          var timeinterval = setInterval(updateClock, 1000);
        }

        var deadline= <? echo '"'.$mm.' '.$dd.' '.$yy.' '.$hh.':'.$mi.':00"'; ?>;
        initializeClock('countdown', deadline);
</script>
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ответы на вопрос 1
Aetae
@Aetae
Тлен
Можно предположить, что Date.parse в сафари не может прочитать формат '"'.$mm.' '.$dd.' '.$yy.' '.$hh.':'.$mi.':00"'.
Попробуйте так:
var deadline= new Date(+YearS, MonthS-1, +DayS, +HourS, +MinS);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы