参照网上例子写了个js动态控制表格,但总是连续删除 三次就报错,求各位大侠指教。
      <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>动态给表格增加/删除一行</title>
</head>
<script language=javascript>
allCount=1
function addline()
{
 newRow=listtable.insertRow(listtable.rows.length);
 newRow.ln=allCount;
 newRow.id=allCount;
 c1=newRow.insertCell(0);
 c1.bgColor="#FFFFFF";
 c1.innerHTML=allCount;
 c2=newRow.insertCell(1);
 c2.bgColor="#FFFFFF";
 c2.innerHTML="<input size=20 name=TxtDubanItem"+allCount+"99 id=TxtDubanItem"+allCount+"99 value="+"TxtDubanItem"+allCount+">";
 c3=newRow.insertCell(2);
 c3.bgColor="#FFFFFF";
 c3.innerHTML="<input size=10 name=TxtDutyUserID"+allCount+"99 id=TxtDutyUserID"+allCount+"99>";
 c4=newRow.insertCell(3);
 c4.bgColor="#FFFFFF";
 c4.innerHTML="<input size=10 name=TxtAssistUserID"+allCount+"99 id=TxtAssistUserID"+allCount+"99>";
 c5=newRow.insertCell(4);
 c5.bgColor="#FFFFFF";
 c5.innerHTML="<input size=10 name=TxtFinDay"+allCount+"99 id=TxtFinDay"+allCount+"99> value="+allCount+" ";
 c6=newRow.insertCell(5);
 c6.bgColor="#FFFFFF";
 c6.align="CENTER";
 c6.id="line"+allCount;
 c6.innerHTML="<input type=button value=删除 onclick=delline(line"+allCount+")>";
 allCount++;
}function delline(lineid)
{
 var k=0;
 for(i=1;i<listtable.rows.length;i++)
 {
   if(listtable.rows[i].cells[5].id==lineid.id)
   {
    allCount--;
listtable.deleteRow(i);
k=i;
break;
  }
 }
 
 for(i=k;i<listtable.rows.length;i++)
 {       var j=i+1;
  alert(i);
  listtable.rows[i].id=i;
      listtable.rows[i].cells[0].innerHTML=i;
      alert("TxtDubanItem"+j+"99");
  alert("TxtDubanItem"+i+"99");
  document.getElementById("TxtDubanItem"+j+"99").id="TxtDubanItem"+i+"99"; //  document.getElementsByName("TxtDubanItem"+j+"99")[0].name="TxtDubanItem"+i+"99";  
  document.getElementById("TxtDutyUserID"+j+"99").id="TxtDutyUserID"+i+"99";
//  document.getElementsByName("TxtDutyUserID"+j+"99")[0].name="TxtDutyUserID"+i+"99";
  
  document.getElementById("TxtAssistUserID"+j+"99").id="TxtAssistUserID"+i+"99";
//  document.getElementsByName("TxtAssistUserID"+j+"99")[0].name="TxtAssistUserID"+i+"99";
  
  document.getElementById("TxtFinDay"+j+"99").id="TxtFinDay"+i+"99";
//  document.getElementsByName("TxtFinDay"+j+"99")[0].name="TxtFinDay"+i+"99";
  
  listtable.rows[i].cells[5].innerHTML="<input type=button value=删除 onclick=delline(line"+i+")>";
  listtable.rows[i].cells[5].id="line"+i; 
  
  }
 
   return;
 }
 
 function show()

 for(i=1;i<=listtable.rows.length;i++)
  {
   var s=document.getElementsById("TxtDubanItem"+i+"99").value;
   alert(s)
  }
 }
</script><body>
  <table width=700 height="20" border="0" align="center" cellpadding=0 cellspacing=0 id=listtable>
  <tr align=center height=20>
  <td bgcolor=#FFFFFF><b>序号</b></td>
  <td bgcolor=#FFFFFF><b>督办事项</b></td>
  <td bgcolor=#FFFFFF><b>主办人</b></td>
  <td bgcolor=#FFFFFF><b>协办人</b></td>
  <td bgcolor=#FFFFFF><b>完成时限</b></td>
  <td bgcolor=#FFFFFF><b></b></td>
  </tr>
</table>
 <table width="700" height="25" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr><td align="center"><input type=button value=增加一行 onclick=addline()> <input type=button value=显示 onclick=show()></td>
 </tr>
</table>
</body>
</html> 

解决方案 »

  1.   

    你用jquery吧。。时面自带选择器删除很快
      

  2.   

    严重推荐使用jquery,做这种小应用,何须费这么大劲,看代码都怪吃力的。
      

  3.   

    你要实现这个功能!不用Jquery 也没有那么复查的!你代码写的太复查了!
      

  4.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>测试</title>
    <script type="text/javascript" src="My97DatePicker/WdatePicker.js"></script>
    <script type="text/javascript">//添加类型
    function addType(type){
    if(type=='reg'){
    var arr=new Array();
    arr=document.getElementsByName("regname");//表格中已经有几个涉及到的法律法规对象
    if(arr.length>0){
    createregType(arr.length);//开始创建
    }
    }
    }
    //删除所选类型
    function deleType(type){
    if(type=='reg'){
    var regtables = document.getElementById("regtables");
    var checkboxs = document.getElementsByName("checkboxs");
    var tr = regtables.getElementsByTagName("tr");
    for (var i=0; i<checkboxs.length; i++) {
    if(tr.length==3){
    checkboxs[i].checked == false;
    return false;
    }
    if(checkboxs[i].checked==true){
    removeTrCh(checkboxs[i],type);
    i=-1;
    }
    }
    }
    }
    //删除表格
    function removeTrCh(obj,type) {
    if(type=='reg'){
    var regtables = document.getElementById("regtables");
    var str = obj.parentNode.parentNode;//得到要删除第一行对象
    regtables.deleteRow(str.rowIndex+1);//根据行索引删除后两行
    regtables.deleteRow(str.rowIndex+1);
    str.parentNode.removeChild(str);//删除第一行
    }
    }//创建类型
    function createregType(id){
    var tbodys = document.getElementById("regtodys");//得到regtbody对象var regname = tbodys.getElementsByTagName("tr")[0];//得到法律名称对象
    var regother = tbodys.getElementsByTagName("tr")[1];//得到分类、时间、单位
    var regcontent = tbodys.getElementsByTagName("tr")[2];//得到法律正文对象var newRegname=regname.cloneNode(true);//复制法律名称对象
    newRegname.getElementsByTagName("input")[1].id="regname"+id;//设置新的法律名称对象id
    newRegname.getElementsByTagName("input")[1].value="";//清空数据
    var newRegother=regother.cloneNode(true);//复制法律分类、时间、单位
    newRegother.getElementsByTagName("select")[0].id="regtype"+id;//设置新的法律类型对象id
    newRegother.getElementsByTagName("input")[0].id="regtime"+id;//设置新的法律类型对象id
    newRegother.getElementsByTagName("input")[0].value="";//清空数据
    newRegother.getElementsByTagName("input")[1].id="regaddress"+id;//设置新的法律单位对象id
    newRegother.getElementsByTagName("input")[1].value="";//清空数据var newRegcontent=regcontent.cloneNode(true);//复制法律正文对象
    newRegcontent.getElementsByTagName("textarea")[0].id="regcontent"+id;//设置新的法律正文对象id
    newRegcontent.getElementsByTagName("textarea")[0].value="";//清空数据tbodys.appendChild(newRegname);//把法律名称添加到表格对象中
    tbodys.appendChild(newRegother);//把法律类型、时间、单位添加到表格对象中
    tbodys.appendChild(newRegcontent);//把法律正文添加到表格对象中
    }

    </script>
    </head>
    <body>
    <table class="commonTable" width="100%" cellspacing="0"
    cellpadding="0" border="0" id="textareas">
    <tr>
    <td colspan="100%">
    <fieldset>
    <legend>
    <span><b>涉及到的法律法规</b></span>
    <span>
    <input type="button" value="添 加" onclick="addType('reg');"/>  <input type="button" value="删 除" onclick="deleType('reg');"/></span>
    </legend>
    <table width="100%" id="regtables" border="1">
    <tbody id="regtodys">
      <tr>
        <td style="width:2%" rowspan="3"><input type="checkbox" name="checkboxs"/></td>
        <td style="width:6%"><div align="right">法律名称:</div></td>
        <td colspan="5"><input type="text" name="regname" value="" id="regname" style="width:100%"/></td>
      </tr>
      <tr>
        <td style="width:6%"><div align="right">分类:</div></td>
        <td width="22%"><select name="regtype" id="regtype" style="width:100%">
    <option value="1">1</option>
    </select></td>
        <td style="width:6%"><div align="right">颁布时间:</div></td>
        <td width="22%"><input type="text" name="regtime" value="" id="regtime" style="width:100%" class="Wdate"  onFocus="choseDate(this);"/>
        </td>
        <td style="width:6%"><div align="right">颁布单位:</div></td>
        <td width="22%"><input type="text" name="regaddress" value="" id="regaddress" style="width:100%"/></td>
      </tr>
      <tr>
        <td style="width:6%"><div align="right">正文:</div></td>
        <td colspan="5"><textarea rows="" cols="" name="regcontent" id="regcontent" style="width:100%" ></textarea></td>
      </tr>
      </tbody>
    </table>
    </fieldset>
    </td>
    </tr>
    </table>
    </body>
    </html>我以前写的、你可能需要改动一下。