2012-08-22 209 views
2

这里是我的问题相当简化的版本:不能更改元素的name属性

我有什么:

<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未知的运行时错误

+0

你的第一次尝试(使用'replace')在Chrome的工作对我来说:http://jsfiddle.net/jackwanders/在Chrome和IE8 UDuBT/ – jackwanders

+0

工作对我来说:http://jsfiddle.net/j08691/42LHk/ – j08691

+0

对我来说他们都工作在Chrome:http://jsfiddle.net/ffaQn/ – Oriol

回答

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"/>';

这个工程跨浏览器(在IE6测试)。

正如Bergi指出的那样,下面的代码也应该工作(在IE6和FF12中测试)。
它使用条件注释针对微软的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); 

GOOD LUCK !!

+0

我想这仅仅是他调试:读t他属性给出... – Bergi

+0

@Bergi:提问者指出:'当我尝试直接设置innerHTML的 - 我有IE未知的运行error'。每个浏览器都应该自然而然地窒息。 – GitaarLAB