2009-12-04 66 views
1

您好,我在頁面上使用名稱查看器[]選擇了幾個選項。迭代javascript中的html數組

在JavaScript中,我希望遍歷這個數組,並獲得每個選定的索引。

var welements = document.getElementsByName('viewer[]')[0]; 
     for (var i in welements) 
     { 
     alert(i.selectedIndex); 
      } 

我已經在上面,但它明顯錯了。我相信第一行是正確的 - document.getElementsByName返回一個數組,所以我只想要第一個(也是唯一)的結果,這是查看器[] html array

讚賞,謝謝!

回答

0

3檢查點

  • 應該wlements[i]而不是i
  • [0]將不再需要在第一線
  • 你確定viewer[]?我認爲只有viewer

如果我,我會做這樣的

var welements = document.getElementsByName('viewer'); 
for (var i in welements){ 
alert(welements[i].selectedIndex); 
} 

如果你只想要第一個,對於不需要

var welements = document.getElementsByName('viewer')[0]; 
alert(welements.selectedIndex); 
3

使用循環「爲每個」(在)的javascript返回包含數組原型屬性的數組內的所有屬性。因此,它不建議,更好,如果你喜歡重複

for(var i=0; i < welements.length; i++){ 
    alert(welements[i].selectedIndex); 
7

getElementsByName需要一個節點列表,而不是一個數組。 NodeLists非常像數組,但是有區別。

無論哪種方式,你不應該重複使用他們在for (foo in bar) - 即獲取所有性質(包括foo.length),而不僅僅是你所關心的值。

用途:

var welements = document.getElementsByName('viewer[]'); // Removed [0], that gets the **1st** node, not the NodeList. 
for (var i = 0, j = welements.length; i < j; i++) { 
    var an_element = welements[i]; 
    alert(an_element.selectedIndex); 
} 
1

遍歷你不應該使用了「(我在陣列)」形成一個陣列。這必然會返回不是數組的數字索引的項目...其他名稱(如「length」和「items」)。

使用這個代替:

var welements = document.getElementsByName('viewer[]'); 
for (var i = 0; i < welements.length; i++) 
    { 
    alert(welements[i].selectedIndex); 
    } 

注爲S.Mark說你不想[0]在第一行,因爲這是隻抓的第一個項目。或者你也許想要它......你不清楚這一點。你說你有多個名爲「viewer []」的東西,但你也意味着你只需要第一個。如果那是真的,那麼你根本不需要循環! welements.selectedIndex已經爲您提供了第一個「viewer []」項目的值。