没有时间改,给你几个建议吧
1.数据与样式分离.javascript用于创建表格,样式用css来渲染
2.添加行时,给td中的对象起用相同的名字,可以减少很多错误来源
3.删除行时,得到该行的引用,如:curTr,然后在tbody中appendChild(curTr);这时该被移到rows的最后,你只管删除最后一个就行了.或者,创建一个fragment对象,把该对象放到fragment对象里,将直接从rows中消失.var fm = document.createFragment(); fm.appendChild(curTr);再或者,就直接用deleteRow方法,这最简捷.
4.相同的字符串用变量来定义,然后引用,不要到处都写相同的代码.能用循环的要用循环,循环中的微弱不同可以用数组或者对象等技术解决.
5.添加行时,可以检查是否有已经添加好的行,如果有,tr.cloneNode(true);再清除几个textarea中的数据,操作量要小很多.其实改进的方法很多,你为什么要选择一个那么麻烦的方法呢?

解决方案 »

  1.   

    现在主要就是删除的时候,我还要把控件id和name向前移动,
    比如id=1,2,3,4,5,6,我删除id=2不仅要删除2这行,还要把id=3,4,5,6变成id=2,3,4,5
    就是在移动id的时候出了问题.,但是行还是可以删除.to zhaoxiaoyang(梅雪香@深圳)  
    1.数据与样式分离.javascript用于创建表格,样式用css来渲染
    是什么意思你是说象,td.innerHTML="<textarea  id=f1_"+xh+"_3   name=f1_"+xh+"_3 cols=31 rows=5 class=textarea1></textarea>";
    这句吗?
    那我的数据要写在什么地方,给这个方法获得呢呢
      

  2.   

    昨天有时间 把以前的代码改了一下,嘿嘿 还很顺利一下就搞完,今天来结帖
    //增加行数  
     // tbodyid:tbody的id,
     // trid:行id,
     // array:td里面的内容数组
    function addRow(tbodyid,trid,array)                 
    {   
       var table = document.getElementById(tbodyid);
       
       var r = newTR();
       
       table.appendChild(r);
       
       for(var i=0;i<array.length;i++)
       {
        if(array[i]==null) 
        array[i]="";
    d = newTD(array[i]);
    r.appendChild( d );   
       }
       paixu(table,trid);
      
    } //返回一个新的行
    function newTR()                   
    {
        return  document.createElement('TR');
    }  //返回一个新的列
    function newTD(content)                     
    {
       d = document.createElement('TD');
       d.innerHTML=content;
       return  d;
    }
    ///删除一行
     // tbodyid:tbody的id,
     // trid:行id,
     //object:当前调用这个方法的对象
    function delRow(tbodyid,trid,object)
    {
    table = document.getElementById(tbodyid);    
    table.removeChild( object.parentNode.parentNode  ); 
    paixu(table,trid);
    }
    ////增加或者删除行后重新排序
    function paixu(table,trid)
    {
    trnum = table.rows.length;
    if(trnum==0) return;
        tdnum = table.rows[0].cells.length;
        for(var i=0;i < trnum ;i++)
        {
        table.rows[i].id = trid+"_"+(i+1);
        for(var j = 0 ; j < tdnum ; j++)
        {
        table.rows[i].cells[j].id = table.rows[i].id+"_"+(j+1);
        }
        } 
    }