setInterval js不更新结果

时间:2017-08-07 17:28:35

标签: javascript php

我有倒计时功能(有效)。

      // Set the date we're counting down to
      var countDownDate = new Date("<?= $stop_datejs ?>");

      // Update the count down every 1 second
      var x = setInterval(function() {

          // Get todays date and time
          var now = new Date();

          // Find the distance between now an the count down date
          var distance = countDownDate - now;

          // Time calculations for days, hours, minutes and seconds
          var days = Math.floor(distance / (1000 * 60 * 60 * 24));
          var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
          var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
          var seconds = Math.floor((distance % (1000 * 60)) / 1000);

          // Output the result in an element with id="demo"
          document.getElementById("demo").innerHTML = days + "d " + hours + "h "
          + minutes + "m " + seconds + "s ";

          // If the count down is over, write some text
          if (distance < 0) {
              clearInterval(x);
              document.getElementById("demo").innerHTML = "ACTUALIZA LA PÁGINA";
          }
      }, 1000);

但我需要与php变量$ actual_date(服务器日期)进行比较

          // Get todays date and time
          var now = new Date("<?= $actual_date ?>");

可行,但每秒都会停止更新。问题是什么? 谢谢

1 个答案:

答案 0 :(得分:0)

变量now不会更新,因为变量只会一次。因此,如果您加载网页,该值将设置一次但不会更新,因为网站不会再次更新(仅限您的间隔)。 要提供此功能,您只需使用:

// Get todays date and time
var now = new Date();

这只会使用当前时间作为Date的新实例。如果您的<?= $actual_date ?>不是当前时间戳,或者您希望同步,如果所有浏览器/电脑的时间设置不正确,您应该查看AJAX。使用AJAX是从后端获取更新时间的最简单方法。

jQuery Ajax: http://api.jquery.com/jquery.ajax/