Он отлично работает со следующим JavaScript.
Однако я не знаю, как проверить, есть ли значение «дата окончания» при первой загрузке.
Это JavaScript, который ведет обратный отсчет со значением конечной даты.
Например: (На самом деле li выставляется как оператор for)
<ul>
<li>
<div id="time-wrap" class="time-countdown" data-end-date="2019-01-25 14:00:00"></div>
</li>
<li>
<div id="time-wrap" class="time-countdown" data-end-date=""></div>
</li>
<li>
<div id="time-wrap" class="time-countdown" data-end-date="2019-01-27 14:00:00"></div>
</li>
<li>
<div id="time-wrap" class="time-countdown" data-end-date=""></div>
</li>
<li>
<div id="time-wrap" class="time-countdown" data-end-date="2019-01-29 14:00:00"></div>
</li>
<li>
<div id="time-wrap" class="time-countdown" data-end-date="2019-01-29 14:00:00"></div>
</li>
.
.
.
</ul>
$('.time-countdown').each(function(i){
var timeSaleWrap = $(this);
var serialDate = timeSaleWrap.data('end-date');//data value
var endDate = new Date(serialDate);
timeSaleWrap.attr('id', "time-wrap" + (i + 1));
Timesalescounter(endDate, 'time-wrap' + (i + 1));
function Timesalescounter(dt, id) {
var endTime = new Date(dt);
var slaeEnd = endTime.getTime(dt);
var evEdate = slaeEnd;
var timer;
function actuionWrap() {
var startTime = new Date();
var today = startTime.getTime();
var evSdate = today;
var deltaTime = evEdate - evSdate;
var s = Math.floor(deltaTime / 1000);
var m = Math.floor(s / 60);
var h = Math.floor(m / 60);
var d = Math.floor(h / 24);
h %= 24;
m %= 60;
s %= 60;
var weeks = Math.floor(d / 7);
var d = d - weeks * 2;
var timeS = Math.floor( evSdate / 1000 );
var timeE = Math.floor( evEdate / 1000 );
var timeT = Math.floor( timeE - timeS );
if ( !timeT || timeT < 0 ) {
document.getElementById(id).style.display = "none";
clearInterval(timer);
document.getElementById(id).textContent = "00h";
document.getElementById(id).textContent = "00m";
document.getElementById(id).textContent = "00s";
return;
} else {
h = (h < 10) ? "0" + h : h;
m = (m < 10) ? "0" + m : m;
s = (s < 10) ? "0" + s : s;
var time_content= "<div class='clock-wrap'>"+
"<div class='days cell' title='Days'>"+d+"<span id='sp_days'>days</span></div>"+
"<div class='hours cell' title='Hours'>"+h+"<span id='sp_hours'>hours</span></div>"+
"<div class='mins cell' title='Minutes'>"+m+"<span id='sp_minutes'>mins</span></div>"+
"<div class='secs cell' title='Seconds'>"+s+"<span id='sp_seconds'>secs</span></div>"+
"</div>";
document.getElementById(id).innerHTML = time_content;
}
} //actuionWrap
timer = setInterval(actuionWrap, 1000);
}
});
Сейчас существует 5примеров, но на практике их может быть больше 100.
Этот JavaScript, похоже, занимает много времени для загрузки при первой загрузке страницы.
Есть ли значение для "data-end"-date "и мне не нужно проверять это?
Или было бы медленнее, если бы у меня было значение" дата окончания данных "и ничего не проверялось?
Как выоптимизировать его?
Добавить: Почему он не работает в IE11?Нет ошибок / ошибка отображается.
timeSaleWrap.attr('id', "timesale-wrap" + (i + 1));
Не работает.