JS动态新增多行,删除一行后.再新增.给表单赋的值就出错了.高手帮看一下啊!!

tutu123 发布于 2012/05/03 11:11
阅读 1K+
收藏 0

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<script language="javascript">
function   check() {
        var newTr = table2.insertRow();
        var newTd01 = newTr.insertCell();
        var newTd02 = newTr.insertCell();

        var table = document.getElementById("table2");
        var num = table.rows.length;
        var i = num-1;
        var x = i-1
        var sp_bianma="sp_bianma"+x;
      
 

  table.rows[i].cells[0].innerHTML = "<input type='button' value='删除'onClick='del(this);'/>"+x+"";
  table.rows[i].cells[1].innerHTML = "<input type='text' name='"+sp_bianma+"' id='"+sp_bianma+"'/>";
  xu();
  document.getElementById(""+sp_bianma+"").value = x;
   }

 

function del(obj){
   var m = obj.parentElement.parentElement.rowIndex;
   var table1 = document.getElementById("table2");

   table1.deleteRow(m);
   xu();
}
  
  
function xu(){ 
   var table = document.getElementById("table2");
   var num = table.rows.length;
   for(xx=1;xx<num-1;xx++){
   i = xx +1
   table.rows[i].cells[0].innerHTML = "<input type='button' value='删除'onClick='del(this);'/>"+xx+"";
   table.rows[i].cells[1].getElementsByTagName("input")[0].name = "sp_bianma"+xx;
   table.rows[i].cells[1].getElementsByTagName("input")[0].id = "sp_bianma"+xx;
   }
   }
   </script>
<body>
<input name="" type="button" onClick="check()" />
<table width="200" border="2" cellpadding="1" id="table2" name="table2">
    <tr>
    <td width="44">序号</td>
    <td width="168">商品编号</td>
  </tr>
</table>
</body>
</html>

加载中
0
诸葛非卿
诸葛非卿
兄弟,别的不说了,你能给添加个注释吗?那里是给表单赋值的方法啊??
0
归海一刀
归海一刀
好乱的代码
0
xoHome
xoHome

你这样只能在IE下运行,都不符合W3C标准。inserRow和inserCell需要加一个下标参数,不然非IE浏览器跑不起来。

实际情况也是这样,我试了IE下正常,其它浏览器报错。

0
t
tutu123
谁能帮整一下不啊!我实在弄不好了
0
Andre.Z
Andre.Z
删除中间一个,再新增,就没值???
0
t
tutu123
是的啊!弄了很久都搞不定 帮帮忙吧
0
Andre.Z
Andre.Z

你从0开始,假设你总共3个,你删除第2个,那么,那么新增的,id是多少?是“sp_bianma2”,而id为这个的,你前面已经创建过,就是没删除前的第三个。那么,你赋值的时候,由于有2个id一样的,js只会取你前面那个,所以,你后面新建的这个id重复的,就会没赋值!
计算x的时候,不要根据你的行数去,和你前面的序号区分开,你可以弄个一直增加的全局变量,不要取值重复就好了。
序号是序号,id和值是要变的,不要回去了!

0
t
tutu123
 xu();的函数就是刷新删除后的ID,使ID自动上移.不知道错在哪
Andre.Z
Andre.Z
我上面已经说了。
0
t
tutu123
检查过了,删除第二行,第三行的ID会改成sp_bianma2.
Andre.Z
Andre.Z
为什么出错和怎么改,我告诉你了,自己改去。这代码我看到头大。
Andre.Z
Andre.Z
计算id和赋值的时候,不要用你的x,因为你的x是根据行数来的,这样删除了,会导致重复!!!!
Andre.Z
Andre.Z
这个我前面已经说过了,删除第二行,那么,原先的第三行变成第二行,而且id是"sp_bianma2"!! 你接着新建第三行,照你的算的,id也是“sp_bianma2”!js赋值的时候,只会取到前面的,不会给你新的这个赋值!
0
t
tutu123
谢谢大家
返回顶部
顶部