倒计时。如果像下面这样:<SCRIPT LANGUAGE="JavaScript">   
//function yy() {  
   var maxtime = 60;  
    if(confirm("倒计时为  "+maxtime+" 秒!请耐心等待......")) {
    function CountDown(){   
           if(maxtime>=0){       
             msg = "距离结束还有"+maxtime+"秒";   
            document.all["timer"].innerHTML=msg;   
            --maxtime;  
   }
   else{   
             clearInterval(timerr);   
             alert("时间到,结束!");   
           }   
        }
      timerr = setInterval("CountDown()",1000);  
}
//}
//yy();
</SCRIPT>   
<div id="timer" style="color:red"></div>  
能得到正确的效果。如果我把代码里面的那些注释去掉,也就是
<SCRIPT LANGUAGE="JavaScript">   
function yy() {  
   var maxtime = 60;  
    if(confirm("倒计时为  "+maxtime+" 秒!请耐心等待......")) {
    function CountDown(){   
           if(maxtime>=0){       
             msg = "距离结束还有"+maxtime+"秒";   
            document.all["timer"].innerHTML=msg;   
            --maxtime;  
   }
   else{   
             clearInterval(timerr);   
             alert("时间到,结束!");   
           }   
        }
      timerr = setInterval("CountDown()",1000);  
}
}
yy();
</SCRIPT>   
<div id="timer" style="color:red"></div>  
在外面套了个函数。
就会出现错误为什么呢 怎样才能在外面套个函数的情况下正常运行?

解决方案 »

  1.   


    按你说的上面的那个可以执行成功,
    那为什么要在countDown()外再套一个yy()?
      

  2.   

    因为我要在HTML中点击而触发上面这一段
      

  3.   

    外部加一个yy()时,由于用的是setInterval("CountDown()",以字符串的形式传函数参数,可是你并没定义全局的CountDown()函数,所以程序会找不到CountDown函数;
    修改方法有两个:
    1、setInterval(CountDown,1000)
    2、把CountDown()函数定义为全局函数 
      

  4.   

    function CountDown(t){
    if(t>=0){
    msg = "距离结束还有"+t+"秒";   
            document.all["timer"].innerHTML=msg;   
            --t;
    setTimeout("CountDown("+t+")",1000);
    }else{
    alert("时间到,结束!");
    }
    }
    function yy(t){
    if(confirm("倒计时为  "+t+" 秒!请耐心等待......")) {
    CountDown(t)
    }
    }
    yy(60);
      

  5.   


    <SCRIPT LANGUAGE="JavaScript">   
    function yy() {  
       var maxtime = 60;  
        if(confirm("倒计时为  "+maxtime+" 秒!请耐心等待......")) {
          timerr = setInterval(function (){   
               if(maxtime>=0){       
                 msg = "距离结束还有"+maxtime+"秒";   
                document.all["timer"].innerHTML=msg;   
                --maxtime;  
               }
               else{   
                 clearInterval(timerr);   
                 alert("时间到,结束!");   
               }   
            },1000);  
        }
    }
    yy();
    </SCRIPT>   
    <div id="timer" style="color:red"></div>
      

  6.   

    没问题的,调试过
    把执行放到div画出之后。<div id="timer" style="color:red"></div>  
    <script type="text/javascript"> 
    function CountDown(t){
    if(t>=0){
    msg = "距离结束还有"+t+"秒";   
            document.all["timer"].innerHTML=msg;   
            --t;
    setTimeout("CountDown("+t+")",1000);
    }else{
    alert("时间到,结束!");
    }
    }
    function yy(t){
    if(confirm("倒计时为  "+t+" 秒!请耐心等待......")) {
    CountDown(t)
    }
    }
    yy(60);
    </script>