在 JS 中使用服务器日期时倒数计时器无法正常工作?

我正在尝试制作一个倒数计数器。如果我使用来自用户机器的 JS 日期/时间,下面的代码工作正常。我想更改它以从服务器获取日期/时间。当我在JS代码中使用PHP日期时,除非我刷新页面,否则倒计时计时器不会计数的问题。


以下是当前日期/时间的 php:


$date = date('Y/m/d H:i:s');

然后在这里我将 $date 添加到 JS 函数中:


var DownDate = new Date("Feb 5, 2050 23:50:00").getTime();

var ax = setInterval(function() {

//var anow = new Date().getTime(); // JS date will work fine, but I don't want to rely on user's machine time. So next is the same but using php date/time.


var anow = new Date("<?php echo $date; ?>").getTime();

var adistance = DownDate - anow;

var aminutes = Math.floor((adistance % (1000 * 60 * 60)) / (1000 * 60));

  var aseconds = Math.floor((adistance % (1000 * 60)) / 1000);

  document.getElementById("timer").innerHTML = 

   aminutes + "m " + aseconds + "s ";

}, 1000);


富国沪深
浏览 170回答 1
1回答

慕斯王

PHP 代码只在服务器上执行,你不能在设定的时间间隔内循环执行 php 代码,这就是你的问题所在。相反,执行一次并将其存储到一个变量中,然后让客户端每过一秒就更新变量(和 dom)。var DownDate = new Date("Feb 5, 2050 23:50:00").getTime();var anow = new Date("<?php echo $date; ?>").getTime();var ax = setInterval(function() {&nbsp; &nbsp; anow+= 1000&nbsp; &nbsp; var adistance = DownDate - anow;&nbsp; &nbsp; var aminutes = Math.floor((adistance % (1000 * 60 * 60)) / (1000 * 60));&nbsp; &nbsp; var aseconds = Math.floor((adistance % (1000 * 60)) / 1000);&nbsp; &nbsp; document.getElementById("timer").innerHTML =&nbsp;&nbsp; &nbsp; aminutes + "m " + aseconds + "s ";}, 1000);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript