注册 登录
编程论坛 JavaScript论坛

请求各位帮我改一下这个倒计时代码

爱人别跑 发布于 2010-05-18 19:29, 703 次点击
<body>
<span id="id1">2009-10-01 00:00:00</span>
<script>
            var     dt = $("id1").innerHTML;
            var     strArr  = dt.split(" ");
            var     strDay  = strArr[0].split("-");
            var     strTime = strArr[1].split(":");
            //document.write(strDay[0]+strDay[1]+strDay[2]+strTime[0]+strTime[1]+strTime[2]);
            //这个函数是倒计时
            //setInterval("djs()",1000);
         
            setInterval(showTime, 1000);

            function $(id) {
                return document.getElementById(id);
            }
            function showTime()

            {
                minutes = 1000 * 60;
                             hours   = minutes  * 60;
                             days    = hours  * 24;
                            //var years   = days * 365;                 
                             date1   = new Date();
                             date2   = new Date(Date.UTC(strDay[0], strDay[1]-1, strDay[2], strTime[0]-8, strTime[1], strTime[2]));
                             minudt  = date2 - date1;
                            //var y       = Math.floor(minudt/years);
                             d       = Math.floor(minudt/days);
                             h       = Math.floor((minudt - d * days)/hours);
                             m       = Math.floor((minudt - d * days - h * hours)/minutes);
                             s       = Math.floor((minudt - d * days - h * hours - m * minutes)/1000);
                            $('id1').innerHTML = d + "天" + h +  "时" + m + "分" + s + "秒";
            }

</script>
</body>


这个代码是我刚在这论坛找到的,这倒计时非常好,但是就是倒计时完了就开始负倒计时,
所以请各位高手帮我修改成倒计时完毕后显示“本活动已经结束”

先在谢谢了
7 回复
#2
gupiao1752010-05-19 13:59
程序代码:
<body onload="showTime()">
<span id="id1">2010-05-19 13:58:00</span>
<script>
            var     dt = $("id1").innerHTML;
            var     strArr  = dt.split(" ");
            var     strDay  = strArr[0].split("-");
            var     strTime = strArr[1].split(":");
            //document.write(strDay[0]+strDay[1]+strDay[2]+strTime[0]+strTime[1]+strTime[2]);
            // 这个函数是倒计时
            //setInterval("djs()",1000);
      
         

            function $(id) {
                return document.getElementById(id);
            }
            function showTime()
            {
                minutes = 1000 * 60;
                             hours   = minutes  * 60;
                             days    = hours  * 24;
                            //var years   = days * 365;               
                             date1   = new Date();
                             date2   = new Date(Date.UTC(strDay[0], strDay[1]-1, strDay[2], strTime[0]-8, strTime[1], strTime[2]));
                          
                             minudt  = date2 - date1;
                            //var y       = Math.floor(minudt/years);
                             d       = Math.floor(minudt/days);
                             h       = Math.floor((minudt - d * days)/hours);
                             m       = Math.floor((minudt - d * days - h * hours)/minutes);
                             s       = Math.floor((minudt - d * days - h * hours - m * minutes)/1000);
                            $('id1').innerHTML = d + " 天" + h +  "时" + m + "分" + s + "秒";
                            var d1=date1.toString();
                            var d2=date2.toString();
                            //alert(d1==d2);
                                if(d1==d2)// 判断2个时间是否相等,如果相当就清除TIMEOUT!并改变显示,否则一切照旧!
                            {
                            clearTimeout(t);
                            $('id1').innerHTML =" 本活动已经结束";
                            }
                            else
                            {
                             var t=setTimeout(showTime,1000);
                             }
            }
</script>
</body>

#3
gupiao1752010-05-19 14:01
注:把<span id="id1">2010-05-19 13:58:00</span>,这里头的时间分钟数设置得比电脑时间向后设置一分钟,方便调试!
#4
爱人别跑2010-05-19 14:16
回复 3楼 gupiao175
程序代码:
<body onload="showTime()">
<span id="id1">2010-05-19 13:58:00</span>
<script>
            var     dt = $("id1").innerHTML;
            var     strArr  = dt.split(" ");
            var     strDay  = strArr[0].split("-");
            var     strTime = strArr[1].split(":");
            //document.write(strDay[0]+strDay[1]+strDay[2]+strTime[0]+strTime[1]+strTime[2]);
            // 这个函数是倒计时
            //setInterval("djs()",1000);
      
         

            function $(id) {
                return document.getElementById(id);
            }
            function showTime()
            {
                minutes = 1000 * 60;
                             hours   = minutes  * 60;
                             days    = hours  * 24;
                            //var years   = days * 365;              
                             date1   = new Date();
                             date2   = new Date(Date.UTC(strDay[0], strDay[1]-1, strDay[2], strTime[0]-8, strTime[1], strTime[2]));
                        
                             minudt  = date2 - date1;
                            //var y       = Math.floor(minudt/years);
                             d       = Math.floor(minudt/days);
                             h       = Math.floor((minudt - d * days)/hours);
                             m       = Math.floor((minudt - d * days - h * hours)/minutes);
                             s       = Math.floor((minudt - d * days - h * hours - m * minutes)/1000);
                            $('id1').innerHTML = d + " 天" + h +  "时" + m + "分" + s + "秒";
                            var d1=date1.toString();
                            var d2=date2.toString();
                            //alert(d1==d2);
                                if(d1==d2)// 判断2个时间是否相等,如果相当就清除TIMEOUT!并改变显示,否则一切照旧!
                            {
                            clearTimeout(t);
                            $('id1').innerHTML =" 本活动已经结束";
                            }
                            else
                            {
                             var t=setTimeout(showTime,1000);
                             }
            }
</script>
</body>

大哥首先谢谢你的帮助,
但是不能防刷新!能否在麻烦一下大哥帮帮忙呢
#5
gupiao1752010-05-19 17:49
什么叫防刷新??
#6
爱人别跑2010-05-19 18:42
回复 5楼 gupiao175
就是说倒计时完毕后他会显示“本活动已经结束”,但是你要是在刷新一下,他就又开始负倒计时。我需要他倒计时完毕后,不管怎么刷新,还是显示“本活动结束”。麻烦在帮我改一下。好吗。谢谢了
#7
gupiao1752010-05-19 20:38
程序代码:
<body>
<input type="text" id="id1" value="本活动已经结束"/>
<input type="button" onclick="checkT()" value="倒计时"/>

 <script type="text/javascript">
            var re=/^\d+\-*\d+\-*\d+\s*\d+\:*\d+\:*\d+$/;
            var dc,flag,dt,strArr=[],strDay=[],strTime=[];
         function $(id) {return document.getElementById(id);}
   function checkT()
   {
   dc=$('id1').value;
   flag=re.test(dc);
      if(!flag)
                {
    alert("时间格式输入不正确!形如:2010-05-19 13:58:00");
    return false;
    }
    else
    {
    dt=$('id1').value;
    strArr  = dt.split(" ");
    strDay  = strArr[0].split("-");
    strTime = strArr[1].split(":");
    showTime();
    }
             }
         
         function showTime()
            {                minutes = 1000 * 60;
                             hours   = minutes  * 60;
                             days    = hours  * 24;            
                             date1   = new Date();
                             date2   = new Date(Date.UTC(strDay[0], strDay[1]-1, strDay[2], strTime[0]-8, strTime[1], strTime[2]));
      
                             minudt  = date2 - date1;
                             d       = Math.floor(minudt/days);
                             h       = Math.floor((minudt - d * days)/hours);
                             m       = Math.floor((minudt - d * days - h * hours)/minutes);
                             s       = Math.floor((minudt - d * days - h * hours - m * minutes)/1000);
                            $('id1').value = d + "天" + h +  "时" + m + "分" + s + "秒";
                            var d1=date1.toString();
       var d2=date2.toString();
           if(d1==d2)
       {
       clearTimeout(t);
       $('id1').value ="本活动已经结束";
       }
                            else
       {
        var t=setTimeout(showTime,1000);
                             }
            }
</script>
</body>
你看看这样可否,按格式在文本框里输入日期时间,之后文本框里显示:活动结束,再怎么刷新也不会变了!
#8
gupiao1752010-05-19 20:40
如若还有其他特殊要求或其他特殊情况,望能从我提供的那些代码为参考,自己改写,这将有助于你大大提高自己的JS水平!
1