Javascript日期倒计时为负数.我如何在零点停车



我正在尝试修复为我的网站开发的计数器,以便它要么在全零处停止,要么在达到零时显示自定义消息。现在它开始显示负数。这是提供的代码:

 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> &nbsp;days&nbsp; <span>" + hrsLeft + "</span> &nbsp;hours&nbsp; <span>" + minsLeft + "</span>&nbsp; minutes");
        },

如有任何帮助,我们将不胜感激!

防止daysLeftminsLefthrsLeft值降至零以下的最简单方法是将它们封装在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> &nbsp;days&nbsp; <span>" + hrsLeft + "</span> &nbsp;hours&nbsp; <span>" + minsLeft + "</span>&nbsp; minutes");
},

然而,也许您还应该考虑在每个计时器都为零时停止计时器。如果没有看到代码的其余部分,就有点难以确定。

最新更新