2012-08-22 207 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