簡體   English   中英

如何在我的瀏覽器刷新截止日期后停止執行倒計時計時器

[英]How do I stop my countdown timer from executing after it has reached the deadline on refresh of my browser

這就是 JavaScript 的樣子。 我嘗試尋找解決方案,但找不到。 請我需要詳細的解決方案。 在網上我一直看到 cookies 但我不知道在這種情況下如何使用它。

  function countDown() {
      var now = new Date();
      var eventDate = new Date(2020, 5, 22);

      var currentTime = now.getTime();
      var eventTime = eventDate.getTime();

      var remTime = eventTime - currentTime;

      var s = Math.floor(remTime / 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;

      h = (h < 10) ? "0" + h: h;
      m = (m < 10) ? "0" + m: m;
      s = (s < 10) ? "0" + s: s;

      document.getElementById("days").textContent = d;
      document.getElementById("days").innerText = d;

      document.getElementById("hours").textContent = h;
      document.getElementById("minutes").textContent = m;
      document.getElementById("seconds").textContent = s;

      var t = setTimeout(countDown, 1000);

      if (d == 0 && h == 0 && m == 0 && s == 0) {
        clearTimeout(t);
        document.getElementById("demo").innerHTML = "Happy Birthday!"
      }
  }
  countDown();
</script>

您的代碼的問題在於日期檢查邏輯。

如果日期時間(或其一部分)與您檢查的值相同,則使用==檢查只會給您一個真實的響應。

但是,您需要檢查日期是否已經過去。 為此,您需要使用<<=運算符。

這是我的意思的一個例子。 該信息是console.log編輯的,您可以重新實現您在問題中的 DOM 編輯。

 function countDown() { var now = new Date(); var eventDate = new Date(2020, 4, 22); // 22 May 2020 var currentTime = now.getTime(); var eventTime = eventDate.getTime(); var remTime = eventTime - currentTime; var s = Math.floor(remTime / 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; h = (h < 10)? "0" + h: h; m = (m < 10)? "0" + m: m; s = (s < 10)? "0" + s: s; var t = setTimeout(countDown, 1000); // This if statement only runs exactly on eventDate if (d == 0 && h == 0 && m == 0 && s == 0) { document.getElementById("demo").innerHTML = "Happy Birthday;" } // This if statement will run if we're past or exactly on eventDate if (remTime <= 0) { clearTimeout(t). } // This console.log shows that the numbers become negative after the date console,log(remTime, d,h,m;s); } countDown();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM