以下table删除中间的id=2这一行,如何把第2行之后没行的input的name按照原来的q_1_* ,q_2_* , q_3_* ....这样排序?
<TABLE>
  <TR>
<TD><input TYPE="text" name="q_1_1"></TD>
<TD><input TYPE="text" name="q_1_2"></TD>
<TD><input TYPE="text" name="q_1_3"></TD>
  </TR>
  <TR>
<TD><input TYPE="text" name="q_2_1"></TD>
<TD><input TYPE="text" name="q_2_2"></TD>
<TD><input TYPE="text" name="q_2_3"></TD>
  </TR>
  <TR>
<TD><input TYPE="text" name="q_3_1"></TD>
<TD><input TYPE="text" name="q_3_2"></TD>
<TD><input TYPE="text" name="q_3_3"></TD>
  </TR>
  <TR>
<TD><input TYPE="text" name="q_4_1"></TD>
<TD><input TYPE="text" name="q_4_2"></TD>
<TD><input TYPE="text" name="q_4_3"></TD>
  </TR>
  .............
  </TABLE>

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <title>无标题页</title>
    </head>
    <body>
        <table>
            <tr>
                <td>
                    <input type="text" name="q_1_1">
                </td>
                <td>
                    <input type="text" name="q_1_2">
                </td>
                <td>
                    <input type="text" name="q_1_3">
                </td>
                <td>
                    <a onclick="javascript:del(this)">删除</a>
                </td>
            </tr><tr>
                <td>
                    <input type="text" name="q_2_1">
                </td>
                <td>
                    <input type="text" name="q_2_2">
                </td>
                <td>
                    <input type="text" name="q_2_3">
                </td>
                <td>
                    <a onclick="javascript:del(this)">删除</a>
                </td>
            </tr><tr>
                <td>
                    <input type="text" name="q_3_1">
                </td>
                <td>
                    <input type="text" name="q_3_2">
                </td>
                <td>
                    <input type="text" name="q_3_3">
                </td>
                <td>
                    <a onclick="javascript:del(this)">删除</a>
                </td>
            </tr><tr>
                <td>
                    <input type="text" name="q_4_1">
                </td>
                <td>
                    <input type="text" name="q_4_2">
                </td>
                <td>
                    <input type="text" name="q_4_3">
                </td>
                <td>
                    <a onclick="javascript:del(this)">删除</a>
                </td>
            </tr>
        </table>    <script type="text/javascript">
      function del(obj)
      {
           var tr =  obj.parentNode.parentNode;
           resetIndex(tr)
           tr.parentNode.removeChild(tr); 
           
      }
      function resetIndex(tr)
      {
           var next = tr.nextSibling;
           if(next == null || next.tagName != "TR") return;
           var ipts = next.getElementsByTagName("input");
           var regex = /\d+?(?=\_)/;
           for(var i = 0 ; i < ipts.length; i ++)
           {
               name = ipts[i].name;
               var num =0; 
               name.replace(regex,function($1){num=$1-1})
               ipts[i].name = name.replace(regex,num);
           }
           resetIndex(next)
      }
        </script></body>
    </html>
      

  2.   


    aspwebchh 还记得这个吧,前几天也问过你,删除上name排序这个已经解决了,现在导致另外一个出来了
    修改name后,frame框架的链接会打开新窗口。测试发现是修改for循环里面修改name导致的.http://topic.csdn.net/u/20110624/09/4fc74143-608e-4672-bec6-89efcabc6219.html
      

  3.   

    什么打开新窗口啊?是修改name的原因?要不你这样试试
            function resetIndex(tr)
            {
                 var index = tr.getElementsByTagName("td")[0].innerHTML;
                 var next = tr.nextSibling
                 if(!next) return false;
                 var ipts = next.getElementsByTagName("input");
                 for(var i =0; i < ipts.length; i ++)
                 {
                     name = ipts[i].name;
                     name = name.replace(/\d+/,parseInt(index)-1);
                     //ipts[i].name = name;
                     ipts[i].removeAttribute("name");
                     ipts[i].setAttribute("name",name)
                 }
                 resetIndex(next);
            }
      

  4.   


    打开新窗口我的代码写的有错,name修改的位置不对,这个已经解决了。现在发现另一个问题,删除多行,打印index的结果发现  resetIndex(next) 最后一次的时候有错,
      

  5.   

    tr.nextSibling可不可以跳过checkbox选中的行
      

  6.   

    <script src="jquery-1.4.2.js" type="text/javascript"></script>
    <script language="javascript">
    $(document).ready(function(){
    $("a").each(function(){
    $(this).click(function(){
    $(this).parent("td").parent("tr").remove();
    for (var i = 0;i < $("tr").length;i++) {
    var eachTr =  $("tr").get(i);
    for (var j = 0;j < $(eachTr).children("td").length;j ++) {
    var eachTd = $(eachTr).children("td").get(j);
    $(eachTd).find("input").attr("name","q_"+i+"_"+j);
    }
    }
    });
    });
    });
    </script>看看吧,我亲手写的,而且测试过没有问题,jquery在删除指定的行之后,动态修改其他行的input的name属性