如果倒计时为秒数为单位,可采用服务器时间进行倒计时,
用xmlhttp进行刷新同步服务器时间

解决方案 »

  1.   

    js的初始化时间有php生成就ok了
    但精确到秒的话不准,因为有网络延迟
      

  2.   

    用session保存基准时间,每刷新一次就同步一次客户端的时间
    <?php
    session_start();
    if( !isset($_SESSION['time']) ) $_SESSION['time'] = 10;
    if( isset($_GET['time']) ) {$_SESSION['time'] = $_GET['time'];exit;}
    if( isset($_SESSION['time']) && $_SESSION['time'] <= 0 ) $_SESSION['time'] = 0;
    ?>
    <body><div id="ice"></div></body>
    <script>
    var num = <?=$_SESSION['time']?>;
    var xml   = new ActiveXObject("Msxml2.XMLHTTP") || new XMLHttpRequest();
    function timer()
    {
    if( num < 0 ) return;
    var url   = "index.php?time=" + num;
    xml.open("get", url, false);
    xml.send();
    document.getElementById("ice").innerHTML = num;
    num--;
    tm = setTimeout( "timer()", 1000 );
    }
    timer();
    </script>
      

  3.   

    有两处修改<?php
    session_start();
    if( !isset($_SESSION['time']) ) $_SESSION['time'] = 10;
    if( isset($_GET['time']) ) {$_SESSION['time'] = $_GET['time'];exit;}
    if( isset($_SESSION['time']) && $_SESSION['time'] <= 0 ) $_SESSION['time'] = 0;
    ?>
    <body><div id="ice"></div></body>
    <script type="text/javascript">
    var num = <?=$_SESSION['time']?>;
    var xml   = document.all ? new ActiveXObject("Msxml2.XMLHTTP") : new XMLHttpRequest();
    function timer()
    {
    if( num < 0 ) return;
    var url   = "index.php?time=" + num;
    xml.open("get", url, false);
    xml.send(null);
    document.getElementById("ice").innerHTML = num;
    num--;
    tm = setTimeout( "timer()", 1000 );
    }
    timer();
    </script>