当你等待num*1000毫秒时间后,再执行document.write(newletter),此时你的for已经结束,newletter变成letter最后一个字母了,这样就 ....

解决方案 »

  1.   

    可能你延时的时间  for 循环已经结束了 ,  你只是延时了输出
    for (var num=0; num<5; num++) 
    {
    var newletter=letter[num]; 
    setTimeout("document.write(newletter)", num*1000)
    } 换这样测试看看 
    for (var num=0; num<5; num++) 
    {
    var newletter=letter[num]; 
    setTimeout("out(newletter)", num*1000)
    }
    function out(param)
    {
       alert(param);
       document.write(param);
    }
      

  2.   


    <HTML>
        <HEAD>
            <TITLE>           
            </TITLE>
    <script> var letter = new Array("H","e","l","l","o"); 
    var num  = 0;
    function print(){
    if(num < letter.length){
    document.getElementById("osp").innerHTML += letter[num];
    num++;
    }else{
    clearInterval(timer);
    }
    }
    var timer = window.setInterval("print()",1000);</script>
        </HEAD>
        <BODY>   
    <span id="osp"></span>
        </BODY>
    </HTML>
      

  3.   


    <script> var letter = new Array("H","e","l","x","o"); 
    var num=0, timer;function write1() {

    if(parseInt(num)>=5) {
    clearTimeout(timer);
    }

    window.alert(letter[num]);

    num+=1;

    timer=setTimeout("write1();", num*1000);
    }setTimeout("write1();", num*1000);
    </script>
    这样?
      

  4.   

    setTimeout("document.write(newletter)", num*1000)} 
    该函数并不等待建议用num=0
    来代替for循环3楼可以
      

  5.   

    两个问题:
    1、document.write会重写当前文档,会把以前的输出都清除
    2、用setInterval这个函数就有循环的功能了,或者用setTimeout函数递归代码如下:
    var letter = new Array("H","e","l","l","o"); 
    var num=0;
    setInterval("document.body.innerHTML+=letter[num%5];num++",1000);
      

  6.   

    你的设计根本就不可能,即使把那个必包问题解决了。因为一旦页面转载完成后,document.write
    就会把页面内容清理掉不信你可以实验一下下面的代码
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    </HEAD>
    <BODY>
    <div id="div1" name="div1"></div>
    <script>
    showLetter();
    document.write("abc");
    setTimeout("document.write(123)", 1000)
    </script>
    </BODY>
    </HTML>要实现那样的效果可以很简单
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    </HEAD>
    <BODY>
    <div id="div1" name="div1"></div>
    <script>
    var letter = new Array("H","e","l","l","o"); 
    function showLetter(){
       if(letter.length>0){
          div1.innerHTML+=letter.shift();
          setTimeout("showLetter()", 1000)
       }
    }
    showLetter();
    /*document.write("abc");
    setTimeout("document.write(123)", 1000)*/
    </script>
    </BODY>
    </HTML>