Anadi
@Anadi
Если ответ Вам помог мой, решением отметье его!

Почему код не работает в Safari?

Вообщем таймер обратного отсчета.

Код работает в опере, фф, но не работает в сафари. Очень прошу кажите на ошибки в исполнении. С чем связано такое поведении в разных браузерах. Готов принять критику и выслушать как сделать лучше.

ссыль на codepen

$(function () {

    var JSStockDate = ["12 09,2018 13:05:00", "12 11,2018 13:05:00", "12 31,2018 12:59:00", "12 31,2018 12:56:00", "12 10,2018 13:05:00", "12 09,2018 13:05:00"]["12 09,2018 13:05:00", "12 11,2018 13:05:00", "12 31,2018 12:59:00", "12 31,2018 12:56:00", "12 10,2018 13:05:00", "12 09,2018 13:05:00"];

    var anStockTimerModule = {
        Second: 1000,
        Minute: 60000,
        Hour: 3600000,
        Day: 86400000
    };

    var anStockTimerClassList = {
        cnTimer: '.card-time-off-'
    };

    var anStockTimer = {

        stInitStock: function () {

            setInterval(function () {
                this.stStartTimer();
            }.bind(this), 500);
        },
        stGetTimeStampBXJSStockDate: function () {

            var StockDateOff = [];

            for (i = 0; i < (JSStockDate.length); i++) {

                StockDateOff[i] = new Date(JSStockDate[i]).getTime();
            }

            return StockDateOff;
        },
        stGetCurrentDate: function () {

            var CurrentDate = new Date().getTime();

            return CurrentDate;
        },
        stGetPeriodFromStock: function () {

            var PeriodFromStock = {};
            var stGetTimeStampBXJSStockDate = this.stGetTimeStampBXJSStockDate();

            for (i = 0; i < (Object.keys(stGetTimeStampBXJSStockDate).length); i++) {

                PeriodFromStock[i] = stGetTimeStampBXJSStockDate[i] - this.stGetCurrentDate();

                    console.log( typeof(PeriodFromStock[i]) + ' ' + PeriodFromStock[i] );
            }

            return PeriodFromStock;
        },
        stStartTimer: function () {

            var stGetPeriodFromStock = this.stGetPeriodFromStock();

            for (i = 0; i < (Object.keys(stGetPeriodFromStock).length); i++) {

                if (Math.floor((stGetPeriodFromStock[i] % anStockTimerModule.Hour) / anStockTimerModule.Minute) < 0) {

                    $(anStockTimerClassList.cnTimer + i).html('Акция окончена');
                    clearInterval(this.stGetTimeStampBXJSStockDate()[i]);
                } else {

                    $(anStockTimerClassList.cnTimer + i).html(
                            Math.floor(stGetPeriodFromStock[i] / anStockTimerModule.Day) + 'дн ' +
                            Math.floor((stGetPeriodFromStock[i] % anStockTimerModule.Day) / anStockTimerModule.Hour) + 'ч ' +
                            Math.floor((stGetPeriodFromStock[i] % anStockTimerModule.Hour) / anStockTimerModule.Minute) + 'м ' +
                            Math.floor((stGetPeriodFromStock[i] % anStockTimerModule.Minute) / anStockTimerModule.Second) + 'с '
                            );
                }
            }
        }
    };

    anStockTimer.stInitStock();
});


<div class="card-time-off mb-4 pb-3">
     <span class="card-time-off-1 font-weight-bold"></span>
</div>
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
@kirill-93
Попробуйте изменить формат даты с "12 31,2018 13:05:00" на "2018/12/31 13:05:00", скорее всего дело в этом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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