无法更改元素的“名称”属性

时间:2012-08-22 16:26:25

标签: javascript internet-explorer dom element

这是我的问题的简化版本:

我有什么:

<td id='cell'><input name="elem_1_Name"/></td>

我想要什么:

<td id='cell'><input name="elem_1_Name"/><input name="elem_5_Name"/></td>

我尝试了什么:

var elem = document.getElementById("cell").lastChild.cloneNode(true);

然后:

elem.name = elem.name.replace("1","5");

elem.name = "elem_5_Name";

elem.setAttribute("name","elem_5_Name");

,最后

document.getElementById("cell").appendChild(elem);

调试时我得到了什么:

elem.name : "elem_5_Name"

!!但!!

document.getElementById("cell").innerHTML : <input name="elem_1_Name"/><input name="elem_1_Name"/>

当我尝试直接设置innerHTML时 - 我有IE未知的运行时错误

2 个答案:

答案 0 :(得分:1)

document.getElementById("cell").innerHTML : <input name="elem_1_Name"/><input name="elem_1_Name"/>
应该是:
document.getElementById("cell").innerHTML='<input name="elem_1_Name"/><input name="elem_5_Name"/>';

这适用于crossbrowser(在IE6中测试过)。

正如Bergi指出的那样,下面的代码也应该有效(在IE6和FF12中测试) 它使用条件注释来定位microsoft的jscript(因此IE):

/*@cc_on @if (@_jscript)
var elem = document.createElement('<input name="elem_5_Name">');
@else */
var elem = document.createElement("input");
elem.name = "elem_5_Name";
/* @end @*/

document.getElementById("cell").appendChild(elem);

祝你好运!!

答案 1 :(得分:1)