为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2021-12-23 14:33:40
我正在尝试制作一个倒数计数器。如果我使用来自用户机器的 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);
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

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() {

    anow+= 1000

    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);


查看完整回答
反对 回复 2021-12-23
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信