2011-12-21 76 views
0

我想写一个倒数计时器,它从服务器(php)获取时间,然后在客户端(JavaScript)倒计时。不幸的是,我只有一些JavaScript或JQuery的经验。这时脚本是这样的:使用PHP和JavaScript实现倒数

<?php 
    $endTime = mktime(00, 00, 00, 01, 01, 2012); 
    $actTime = time(); 
    $difTime = $endTime - $actTime; 
    $seconds = $difTime; 
?> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    window.setInterval(function() { 
     var seconds = $('div#timer').html();      
     var updateTime = eval(seconds)- eval(1);      
     $('div#timer').html(updateTime); 
    }, 1000); 
}); 
</script> 

<div id="timer"><?php echo $seconds ?></div> 

现在我想剩下的秒转换为天,月,分钟和秒。但是,我不知道如何通过函数 setInterval实现这一点。谁能帮我?也许有更好的方法来处理UNIX-Timestamp?

预先感谢您!

马丁

+0

请注意,'setInterval()'(和'setTimeout()')不能保证回调将按照您指定的时间间隔执行,所以通常是一个好主意,让当前时间开启每次迭代(并根据需要计算与原始服务器指定时间的偏移量)。出于同样的原因,如果将时间间隔设置为明显小于1秒的时间,例如50-100毫秒,那么通常情况下会获得更平滑的时钟。这样,如果时间间隔稍微延迟,则不会觉得计数器跳得太多。 – nnnnnn 2011-12-21 21:18:16

回答

0

使用秒是安静的最佳途径。只有倒计时秒数,并从他们计算其余的。 您只需要将定义的函数扩展为每1秒执行一次。使用mod和div与math.floor来计算从秒钟开始的天数和小时数,并用它构建新的字符串并将其放入div。