2012-02-29 109 views
3

實施例:如何更改id或名稱的值?

<table id ='table'> 
<tr> 
<td>1</td> 
<td><select id='old' name='old'></select></td> 
<td><select id='old2' name='old2'></select></td> 
<td><div id='old3' name='old3'></div></td> 
</tr> 
</table> 

如何從選擇的ID或名稱的值更改= ' '來選擇ID =' '(例如)在JavaScript刪除行後? 我一直在嘗試所有的方法,如嘗試getElementById('舊')='新',但沒有工作,使用replaceChild也不工作(或者我把錯誤的代碼,不知道)。 你有其他的選擇嗎? (請不要使用JQuery)。

謝謝。

+0

你不用提其他行的編號是否應該改變 – ninjagecko 2012-02-29 04:30:03

+0

爲什麼不用jquery? – 2012-02-29 04:30:17

+0

@ninjagecko哦,是的,其他行也應該改變,就像我給的例子一樣,如果old2變成new2,old3變成new3等等。 – candies 2012-02-29 06:13:30

回答

3

您可以使用setAttribute方法來完成這項

document.getElementById("old").setAttribute("id","new"); 
document.getElementById("new").setAttribute("name","new"); 
+0

請注意,在_second line_我已經從_first line_ – blackpla9ue 2012-02-29 04:36:28

+0

分配的新ID中調用了元素。也許你是這麼做的,只是爲了證明id已經改變,您是否將初始元素引用存儲在變量中,然後從該變量中設置兩個屬性,而不是再次調用'.getElementById()'? – nnnnnn 2012-02-29 04:49:32

+0

是的,我做到了這一點,以表明該ID已更改,並可以通過您沒有問題分配的新的訪問。但正如你所說,最好存儲一個ref並保存這兩個屬性:) – blackpla9ue 2012-02-29 05:10:11

1
var sel = document.getElementById("old"); //Reference the element 
sel.id = "new"; //set the id 
+0

是的,這樣我們可以做到 – 2012-02-29 04:40:33

1

試試這個:

document.getElementById("old").name = 'NewName'; 
alert(document.getElementById("old").name); 
document.getElementById("old").id = 'Newid'; 
alert(document.getElementById("Newid").id); 

它爲我工作。

1

我覺得這裏有一些不雅的事情要做,如果你告訴我們更多,我們可以說「正確的方式」來做到這一點。如果你仍然有充分的理由去做你正在做的事情,只需調用你已經做出所有改變的代碼片段即可。它會更新行中的所有元素以獲得正確的編號。

var formElements = document.getElementById('table').getElementsByClassName('toUpdate'); 
for (var i=0; i<formElements.length; i++) { 
    var e = formElements[i]; 
    e.id = 'new'+i; 
} 

如果你不想爲每一個添加class="toUpdate ...",這裏有很多變化。例如,您使用的是常規表單元素,您可以遍歷<form>的元素。或者你可以遍歷所有的元素和模式匹配的名稱或ID。或者,如果您使用javascript在算法上生成此代碼,則可以在將每個元素添加到DOM的同時將其添加到數組中,以便以後使用(如此更新)。