<script type="text/javascript">
        <!--
            var now_time = "2011-4-21 22:00:00";//"<%= now() %>";
            var shoot_time = "2011-4-21 23:00:00";
            var d = new Date(shoot_time.replace(/-/g, "/")) - new Date(now_time.replace(/-/g, "/"));
//alert(d);
            function showtime(){

                d = d - 10;
                var ms = d;
                var u = [ "时", "分", "秒"];
                var s = [ 60 * 60 * 1000, 60 * 1000, 1 * 1000];
                var ret = "目前离截至时间还有:";                for(var n, i = 0; i < u.length; i++){
                        n = parseInt(ms / s[i]);
                        ret += (n > 0 ? n : "00") + u[i];
                        ms -= n * s[i];
                }                document.getElementById("ttime").innerText = ret;
            //setTimeout("showtime()",1000);
}
//showtime();
            setInterval('showtime()',10);

        //-->
        </script>
        <div id="ttime"></div>网络上找的倒计时代码,运行时秒的倒计时明显比实际的慢,不知要怎么改。谢谢

解决方案 »

  1.   

    把 document.getElementById("ttime")放在function 外面
      

  2.   

    这要能行吗?放外面就无法找到ret变量了
      

  3.   

      <script type="text/javascript">
            <!--
                var now_time = "2011-4-21 22:00:00";//"<%= now() %>";
                var shoot_time = "2011-4-21 23:00:00";
                var d = new Date(shoot_time.replace(/-/g, "/")) - new Date(now_time.replace(/-/g, "/"));
                //alert(d);
                function showtime(){
                
                    d = d - 1000;
                    var ms = d;
                    var u = [ "时", "分", "秒"];
                    var s = [ 60 * 60 * 1000, 60 * 1000, 1 * 1000];
                    var ret = "目前离截至时间还有:";                for(var n, i = 0; i < u.length; i++){
                            n = parseInt(ms / s[i]);
                            ret += (n > 0 ? n : "00") + u[i];
                            ms -= n * s[i];
                    }
                    document.getElementById("ttime").innerHTML = ret;            }
                setInterval('showtime()',1000);
      

  4.   

     setInterval('showtime()',1000);
      

  5.   

    问题虽然解决了,但lz原来的代码为什么会造成倒计时速度慢呢?
    它把两个时间点间的时间差每隔10ms显示一次,同时扣除10ms的时间差。为什么会慢呢?