Вообщем таймер обратного отсчета.
Код работает в опере, фф, но не работает в сафари. Очень прошу кажите на ошибки в исполнении. С чем связано такое поведении в разных браузерах. Готов принять критику и выслушать как сделать лучше.
ссыль на
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>