Javascript循环执行一个函数,该函数中有动态为页面上表格增加行。
我希望运行时能看着表格增加过程,可实际情况是页面先一片空白,然后把全部增长完的表格一次性显示出来。
请高手指教!
附代码如下:for (i=0;i<10;i++) {
  showFun();
}

解决方案 »

  1.   

    加了setTimeout或setInterval后,就不循环了。不知道何故
      

  2.   

    <script> 
    var clearObject=null;
    var count=0;
    function add()
    {    
        var table=document.getElementById("mytable");
        var tr = table.insertRow();
        var td=tr.insertCell(0);
        td.innerText="sadf";
        count=count+1;
        if(count>10)
        {
            clearInterval(clearObject);
        }
    }
    function setTime()
    {
        clearObject=setInterval("add()",1000);
    }
    </script> <input type="button" value="添加行" onclick="setTime();" />
      

  3.   

    3楼的可以实现。不过实际上我的showFun中用到ajax从其他页面读取数据,这个执行过程所需时间是不确定的。如果setInterval时间太短的话,会不会强制结束或有重叠;如果太长的话会不会浪费时间?
    不过这样已经有很大进展了,我现在正在尝试你的方法。
      

  4.   

    时间不定,可以用setTimeout().设个时间变量,根据读取数据的时间自定义时间间隔,作为参数传给setTimeout
      

  5.   


    <script>  
    var clearObject=null;
    var count=0;
    var timer = null;
    function add()
    {  
      if(count>10)
      {
    clearTimeout(timer);
    count = 0;
    return;
      }
      var table=document.getElementById("mytable");
      var tr = table.insertRow();
      var td=tr.insertCell(0);
      td.innerText=count;
      count=count+1;
      
      timer = setTimeout("add()",1000);
    }
    </script>  
    <input type="button" value="添加行" onclick="add();" />
    <table id="mytable" ></table>
    改为setTimeout的方法 就可解决lz时间是不确定的的问题了
      

  6.   

    用8楼的方法尝试了一下setTimeout,不循环执行。不知道是不是我哪里弄错了,还是确实不能实现。