我正在尝试修复为我的网站开发的计数器,以便它要么在全零处停止,要么在达到零时显示自定义消息。现在它开始显示负数。这是提供的代码:
eventTimer: function () {
eventsDate = $('.eventBox').attr('data-edate');
today = new Date();
BigDay = new Date(eventsDate);
msPerDay = 24 * 60 * 60 * 1000;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.floor(e_daysLeft);
e_hrsLeft = (e_daysLeft - daysLeft) * 24;
hrsLeft = Math.floor(e_hrsLeft);
minsLeft = Math.floor((e_hrsLeft - hrsLeft) * 60);
$('.counter').html("<span>" + daysLeft + "</span> days <span>" + hrsLeft + "</span> hours <span>" + minsLeft + "</span> minutes");
},
如有任何帮助,我们将不胜感激!
防止daysLeft
、minsLeft
和hrsLeft
值降至零以下的最简单方法是将它们封装在Math.abs()
:中
eventTimer: function () {
eventsDate = $('.eventBox').attr('data-edate');
today = new Date();
BigDay = new Date(eventsDate);
msPerDay = 24 * 60 * 60 * 1000;
timeLeft = (BigDay.getTime() - today.getTime());
e_daysLeft = timeLeft / msPerDay;
daysLeft = Math.abs(Math.floor(e_daysLeft));
e_hrsLeft = (e_daysLeft - daysLeft) * 24;
hrsLeft = Math.abs(Math.floor(e_hrsLeft));
minsLeft = Math.abs(Math.floor((e_hrsLeft - hrsLeft) * 60));
$('.counter').html("<span>" + daysLeft + "</span> days <span>" + hrsLeft + "</span> hours <span>" + minsLeft + "</span> minutes");
},
然而,也许您还应该考虑在每个计时器都为零时停止计时器。如果没有看到代码的其余部分,就有点难以确定。