2009-12-04 87 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 []”项目的值。