<script>
var s,tcount = 0;  //全局变量
function CountTime(iSeconds) 
{
   s = iSeconds
   tcount = 0
   c()
}function c()
{
 //iSeconds秒后运行MyFun()
    tcount++;
    timeLeft = s - tcount;
    timer=window.setTimeout("c()",1000);
    time.innerText=timeLeft
    if(timeLeft<=0)
{
clearTimeout(timer);
MyFun();
}
}
function MyFun()
{
    alert("ok");
}
</script>
<input type="button" onclick="CountTime(3)" value="3秒">
<input type="button" onclick="CountTime(5)" value="5秒"><div id="time"></div>
<body>

解决方案 »

  1.   

    time.innerText=timeLeft,这句话是什么意思,运行的时候不能识别time???
      

  2.   

    不太明白楼主的意思, 不过在设置延时器的用法上楼主没有必要用 clearTimeout
    var tcount = 0;  //全局变量
    function CountTime(iSeconds) 
    {
        tcount++;
        timeLeft = iSeconds - tcount;
        if(timeLeft<=0)  MyFun();
        else window.setTimeout("CountTime("+iSeconds+")",1000);
    }
    function MyFun()
    {
        alert("ok");
    }
      

  3.   

    我的意思是现在执行CountTime()这个函数,当iSeconds=3时,应该执行一次if()后面的
    语句,即只有累加到tcount等于3.if条件才成立.否则每隔1秒执行一次函数.现在问题时
    怎么保存住tcount++后的值,1秒后调用CountTime(iSeconds)函数,tcount的值又被设置为
    0,则此函数将会形成死循环.而且不用clearTimeout怎么清除设置的setTimeout(),急,
    请教
      

  4.   

    tcount是全局变量,所以,会保存住tcount++后的值.
    你可以试一下,点"3秒"完了后,然后再点"5秒".5秒响应只用了"2秒".
    因为tcount是从3开始递增起的.