原因是:
while(t<10){
setTimeout("document.getElementById('txt').value='"+t+" seconds!'",t*1000);
t++;
}将很快执行完毕,然后执行document.getElementById('txt').value="just ten seconds";之后定时器才会有超时也就是,setTimeout并不会等待你设定的时间。代码应该如下:
function timedText(){
    timedText.count = 0;    function showText(){
        if(timedText.count < 10){
            timedText.count++;
            document.getElementById('txt').value=timedText.count +"seconds";
         } else {
            document.getElementById('txt').value="just ten seconds";
            clearInterval(timedText.intervalId);
}
     }
    timedText.intervalId = setInterval(showText,1000);}

解决方案 »

  1.   

    clearInterval(timedText.intervalId);
    timedText.intervalId = setInterval(showText,1000);
    请问这两句是派什么用啊?
      

  2.   

    不用的定时器需要清除掉.如去除这两行,每隔一秒钟就会调用showText一次,尽管看起来没什么影响,但是占用了系统资源
      

  3.   

    我刚查了一下setInterva()这个函数,好像是AS里的嘛,JS里没有的嘛,可否用JS的方法实现上面的问题。
      

  4.   

    setInterval 是js window对象的函数,你为什么不在浏览器上试一下呢?
      

  5.   

    哦,这样啊。我已经试过了。
    最后还有个问题,你刚才不是说我原来的那段代码,while()……将很快执行完毕,然后执行document.getElementById('txt').value="just ten seconds";
    之后定时器才会有超时那我想问的是,当定时器之后在响应,while语句不是已经执行完了吗,那t不是已经变成10了嘛,那为什么那个读秒还是从1开始读。
      

  6.   

    setTimeout("document.getElementById('txt').value='"+t+" seconds!'",t*1000);等同于
    setTimeout("document.getElementById('txt').value='1 seconds!'",t*1000);
    而当t=2时,则
    setTimeout("document.getElementById('txt').value='2 seconds!'",t*1000);
      

  7.   

    那你的意思是不是在做while语句时,没一个seconds!都被设定好了响应的时间。由于while 语句执行的很快来不急等到这些seconds!响应出来就执行下面的just ten seconds 了是这个意思吗,那如过我将setTimeout的延迟时间设定的非常小的话,那有没有可能在执行while语句的同时也显示出每个second!