以下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>
<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>
<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>
aspwebchh 还记得这个吧,前几天也问过你,删除上name排序这个已经解决了,现在导致另外一个出来了
修改name后,frame框架的链接会打开新窗口。测试发现是修改for循环里面修改name导致的.http://topic.csdn.net/u/20110624/09/4fc74143-608e-4672-bec6-89efcabc6219.html
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);
}
打开新窗口我的代码写的有错,name修改的位置不对,这个已经解决了。现在发现另一个问题,删除多行,打印index的结果发现 resetIndex(next) 最后一次的时候有错,
<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属性