【问题标题】:dynamically changing countdown value using moment.js使用 moment.js 动态更改倒计时值
【发布时间】:2020-08-17 06:50:39
【问题描述】:

这是使用 moment.js 库的倒数计时器代码。代码工作没有任何问题。我正在尝试一项附加功能,但无法使其正常工作。当倒计时在页面上运行时。单击 Add30Sec 按钮应将当前倒计时增加 30 秒。因此,如果单击按钮时当前值为 3 分 23 秒,则应变为 3 分 53 秒。

theCountDown(5);
document.getElementById("myBtn").addEventListener("click", function() {

});

function theCountDown(setMinutes) {
  const second = 1000,
    minute = second * 60,
    hour = minute * 60,
    day = hour * 24;
  var newDateObj = moment(Date()).add(setMinutes, "m").toDate();
  let countDown = newDateObj.getTime(),
    x = setInterval(function() {
      let now = new Date().getTime(),
        distance = countDown - now;
      (document.getElementById("days").innerText = Math.floor(distance / day)),
      (document.getElementById("hours").innerText = Math.floor(
        (distance % day) / hour
      )),
      (document.getElementById("minutes").innerText = Math.floor(
        (distance % hour) / minute
      )),
      (document.getElementById("seconds").innerText = Math.floor(
        (distance % minute) / second
      ));
      //do something later when date is reached
      if (distance < 0) {
        clearInterval(x);
        $(".container").children().removeClass().addClass("dissappear");
        $(".container2").hide();
        $("body").addClass("green");
        // .removeClass()
        // .addclass('dissappear')
        // 'IT'S MY BIRTHDAY!;
      }
    }, second);
}
.green {
  background-color: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>

<button type="button" id="myBtn">Click</button>

<span id="days"></span>

<span id="hours"></span>

<span id="minutes"></span>

<span id="seconds"></span>

<div class="container">Container 1</div>

<div class="container2">Container 2</div>

【问题讨论】:

  • 你能提供一个 js fiddle 或最小的工作示例吗?
  • 我给你做了一个你也可以做的 sn-p。请将其设为minimal reproducible example

标签: javascript jquery momentjs countdown


【解决方案1】:

这样

我放弃了无论如何都会发出控制台警告的不必要的时刻

var countDown;
theCountDown(5);
document.getElementById("myBtn").addEventListener("click", function() {
  countDown += 30000;
  console.log(new Date(countDown))
});

function theCountDown(setMinutes) {
  const second = 1000,
    minute = second * 60,
    hour = minute * 60,
    day = hour * 24;
  let newDateObj = new Date();
  newDateObj.setMinutes(newDateObj.getMinutes()+setMinutes)
  countDown = newDateObj.getTime(),
    x = setInterval(function() {
      let now = new Date().getTime(),
        distance = window.countDown - now;
      (document.getElementById("days").innerText = Math.floor(distance / day)),
      (document.getElementById("hours").innerText = Math.floor(
        (distance % day) / hour
      )),
      (document.getElementById("minutes").innerText = Math.floor(
        (distance % hour) / minute
      )),
      (document.getElementById("seconds").innerText = Math.floor(
        (distance % minute) / second
      ));
      //do something later when date is reached
      if (distance < 0) {
        clearInterval(x);
        $(".container").children().removeClass().addClass("dissappear");
        $(".container2").hide();
        $("body").addClass("green");
        // .removeClass()
        // .addclass('dissappear')
        // 'IT'S MY BIRTHDAY!;
      }
    }, second);
}
.green {
  background-color: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>

<button type="button" id="myBtn">Click</button>

<span id="days"></span>

<span id="hours"></span>

<span id="minutes"></span>

<span id="seconds"></span>

<div class="container">Container 1</div>

<div class="container2">Container 2</div>

【讨论】:

  • 我注意到您使用了 var contDown 。如果我尝试使用 'let' 代替 'var' 代码会中断。你能告诉我为什么会这样吗
  • 如果 countDown 在其余代码的范围内,您可以使用 let
猜你喜欢
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多