appendChild的一个奇怪问题,大家来看看
有一个table,我想克隆一行然后修改table里面的元素名称,然后直接把新克隆的行append到table最后一行,代码如下:
<script>
var count =1;
function aa(){
var testTb = document.getElementById( "testTb ");
var firstRow = testTb.rows[0].parentNode.cloneNode(true);
testTb.appendChild(firstRow);
firstRow.childNodes[0].cells[0].childNodes[0].name= "privateCatalog[1].cataId ";
var element = form1[ "privateCatalog[0].cataId "];
for(i = 0;i <element.length;i++)
alert(element[i].name);
}
</script>
<body>
<form id= "form1 " name= "form1 " method= "post " action= " ">
<table id= "testTb " width= "100% " border= "0 ">
<tbody>
<tr>
<td> <input onclick= "aa() " type= "text " name= "privateCatalog[0].cataId "/> </td>
</tr>
</tbody>
</table>
</form>
</body>
代码还是不长的,呵呵
说明下
firstRow.childNodes[0].cells[0].childNodes[0].name= "privateCatalog[1].cataId ";
是吧克隆后行里面的text域付给一个新的名字叫 "privateCatalog[1].cataId ",
以示和原来的 "privateCatalog[0].cataId "区别;
然后我var element = form1[ "privateCatalog[0].cataId "];
这段代码居然返回的是一个数组?!!
更奇怪的是这个数组的第一个元素的name是privateCatalog[0].cataId
第二个元素的name是privateCatalog[1].cataId
??
咋会这样呢?我明明取的是privateCatalog[0].cataId元素啊,咋会返回来两个不同的,而且还是数组!!
有谁遇见过这样的怪事啊??
还有,这个问题在firefox下面不存在,返回的就是当前的privateCatalog[0].cataId元素
------解决方案--------------------如果不行你可以给这几个input 加上id属性 操作方法和name一样 只是提交时是以name为准
<input onclick= "aa() " type= "text " id= "input1 " name= "privateCatalog[0].cataId "/>
var element = form1[ "input1 "];