2016-04-27 56 views
-1

我希望在JavaScript中動態更改名稱屬性,但我無法使用element.namesetAttribute()方法更改name屬性。有沒有其他方法來設置name屬性?爲什麼名稱屬性無法使用javascript設置?

var status_Element = document.getElementsByName("BD_task_status_"+old_id+"[]"); 
var final_status_Element = document.getElementsByName("BD_final_task_status_"+old_id+"[]");       
for(var in_count=0;in_count<status_Element.length;in_count++) 
{     
    status_Element[in_count].name="BD_task_status_level"+inner_count+"[]"; 
    final_status_Element[in_count].name="BD_final_task_status_level"+inner_count+"[]"; 
} 
+4

當你問你的問題,有一個大的橙色**如何格式化**框的文本區的有用的信息的權利在裏面。還有一個格式化輔助工具的整個工具欄。和一個** [?] **按鈕提供格式幫助。 *和*預覽區域位於文本區域和發佈您的問題按鈕之間(以便您必須掃描過去以查找按鈕),以顯示發佈後您的帖子的樣子。明確你的帖子,並證明你花時間這樣做,提高你獲得良好答案的機會。 –

+0

你能否讓你的代碼可讀? – Bergi

+0

可能的重複[我可以使用JavaScript設置'name'屬性?](http://stackoverflow.com/questions/1362513/can-i-use-javascript-to-set-the-name-attribute) –

回答

4

設置name財產在你的例子就可以了(比inner_count VS in_count錯字等)。問題是,getElementsByName返回一個元素的集合。當您更改索引0處元素的名稱時,它不再屬於該集合,並且集合將其刪除;那麼原來位於索引1的元素現在位於索引0處。但與此同時,您增加了in_count,因此您永遠不會更改該元素。他們中的一半最終不會被改變。

或者:

  1. 循環向後通過收集來更改名稱(自那時以來消失的元素是在最後,你不關心),或

  2. 使用querySelectorAll代替,它給你一個快照集合(不是一個活的)。 (querySelectorAll支持所有現代瀏覽器,也IE8)。

+0

@ T.J.Crowder。如果更改元素不再存在於收集手段中,則更改元素必須具有新名稱。但這裏沒有變化可能發生 – sakthikumar

+0

@sakthikumar:*那*元素會有一個改變的名字,但是你會跳過下一個。如果你沒有得到**任何**的變化,你的Web控制檯會出現一個錯誤,告訴你什麼是錯的(例如'inner_count'和'in_count')。 –

+0

Thnq T.J.Crowder。它工作正常。 – sakthikumar