javascript - 当达到 0 时从计时器中删除日期和小时?

标签 javascript

我是 javascript 的初学者,不幸的是,我对它还不够了解,无法做出我想要的改变,这就是我在这里伸出援手的原因!

所以基本上我使用的是其他人创建的计时器,但我不喜欢当只剩下 13 分 10 秒时,日期或小时显示为 0 天 0 小时 13 分 10 秒。

如果只剩下 13 分 10 秒,我是否可以让它只显示 13 分 10 秒,同时在时间超过 1 天或 1 小时时保留小时和天数?计时器?

这是代码:

countdown('06/26/2017 8:00 PM', 'timer'); //date format: mm/dd/yyyy hh:mm AM

function countdown(dt, id)
{
  var end = new Date(dt);
  var _second = 1000;
  var _minute = _second * 60;
  var _hour = _minute * 60;
  var _day = _hour * 24;
  var timer;

  function showRemaining() {
    var now = new Date();
    var distance = end - now;
    if (distance < 0) {
      clearInterval(timer);
      document.getElementById(id).innerHTML = 'THE DAY HAS ARRIVED!'; //Displays when countdown is complete
      return;
    }
    var days = Math.floor(distance / _day);
    var hours = Math.floor((distance % _day) / _hour);
    var minutes = Math.floor((distance % _hour) / _minute);
    var seconds = Math.floor((distance % _minute) / _second);

    document.getElementById(id).innerHTML = days + ' days ';
    document.getElementById(id).innerHTML += hours + ' hrs ';
    document.getElementById(id).innerHTML += minutes + ' mins ';
    document.getElementById(id).innerHTML += seconds + ' secs';
  }
  timer = setInterval(showRemaining, 1000);
}

最佳答案

使用if条件检查天、小时或分钟是否大于0。如果它们大于0,则将它们添加到innerHTML。

document.getElementById(id).innerHTML = ""; // initialize it to empty string
if(days > 0) {
  document.getElementById(id).innerHTML += days + ' days ';
}
if(hours > 0) {
  document.getElementById(id).innerHTML += hours + ' hrs ';
}
if(minutes > 0) {
  document.getElementById(id).innerHTML += minutes + ' mins ';
}

document.getElementById(id).innerHTML += seconds + ' secs';

如果分钟或小时为 0,则不会显示分钟或小时,但如果您想在分钟之前有小时、小时之前有天的情况下显示 0 分钟或 0 小时,那么您可以编写额外的 if 条件。

document.getElementById(id).innerHTML = ""; // initialize it to empty string
if(days > 0) {
  document.getElementById(id).innerHTML += days + ' days ';
  if(hours == 0) {
    document.getElementById(id).innerHTML +=  '0 hours ';
    if(minutes == 0) {
      document.getElementById(id).innerHTML +=  '0 mins ';
    }
  }
}
if(hours > 0) {
  document.getElementById(id).innerHTML += hours + ' hrs ';
  if(minutes == 0) {
    document.getElementById(id).innerHTML +=  '0 mins ';
  }
}
if(minutes > 0) {
  document.getElementById(id).innerHTML += minutes + ' mins ';
}

document.getElementById(id).innerHTML += seconds + ' secs';

关于javascript - 当达到 0 时从计时器中删除日期和小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53852627/

相关文章:

javascript - Angular Comment 指令 - 目的/意图/最佳实践

javascript - 至少努力从 Ionic 迁移到 NativeScript

javascript - jquery 移动对话框在页面加载后关闭

javascript - 更改 100K 后 float 的 JQuery Range Slider 值

javascript - 使用纯( Vanilla )JS 在 Canvas 的 X、Y 坐标处触发点击事件

javascript - 使用 Node 代理时出错

javascript - 在 webkit(或 electron)中禁用捏合缩放

javascript - Charts.js 销毁以前的数据并更新

javascript - 在 ES2015 中实例化一个已解决的 promise

javascript - 我应该在 angularjs 应用程序中使用 HTML 元素的 ID