Javascript 列出Select的选项会在FF和IE中给出不同的结果

Javascript 列出Select的选项会在FF和IE中给出不同的结果,javascript,internet-explorer,firefox,select,Javascript,Internet Explorer,Firefox,Select,在我的JavaScript代码中,我试图列出Select的选项(及其值)。下面是一段代码(我使用的是YUI2库……log语句只是将文本放入记录器中): 在Firefox中,我得到以下(正确)输出: 但在Internet Explorer 7中,我得到: my opt, val: language, undefined my opt, val: scrollHeight, undefined my opt, val: isTextEdit, undefined my opt, val: curre

在我的JavaScript代码中,我试图列出Select的选项(及其值)。下面是一段代码(我使用的是YUI2库……log语句只是将文本放入记录器中):

在Firefox中,我得到以下(正确)输出:

但在Internet Explorer 7中,我得到:

my opt, val: language, undefined
my opt, val: scrollHeight, undefined
my opt, val: isTextEdit, undefined
my opt, val: currentStyle, undefined
my opt, val: document, undefined
至少可以说,我有点惊讶。我甚至尝试了(var opt-in(mySelect.options))并更改了变量opt的名称以防万一。没有什么不同

如果我对循环进行如下编码:

for (var idx=0; idx< mySelect.options.length; idx++)
{
  YAHOO.log('my idx, val: ' + idx + ', ' + mySelect.options[idx].value);
}
for(var idx=0;idx
那么IE也很好用

为什么第一种方法不起作用?我认为for/in循环与for循环的工作方式相同

谢谢


Paul

for
/
in
循环对象中的每个属性。
您在Firefox中看不到这些属性,因为它们被标记为
[DontEnum]

您应该使用普通
for
循环来循环数组。

对于普通数组,如果
,您可以跳过键,从而在
循环中为
/
设置
!obj.hasOwnProperty(key)
,但我不确定这是否适用于DOM对象。

for
/
in
循环对象中的每个属性。
您在Firefox中看不到这些属性,因为它们被标记为
[DontEnum]

您应该使用普通
for
循环来循环数组。

对于普通数组,如果
,您可以跳过键,从而在
循环中为
/
设置
!hasOwnProperty(key)
,但我不确定这是否适用于DOM对象。

谢谢您的回答。我肯定误解了for/in的工作原理以及数组的缺陷。我做了更多的研究,发现我的问题已经在这里得到了回答——我只是不知道正确的搜索方法!下面是答案:再次感谢您的帮助…现在要更改我的代码!谢谢你的回答。我肯定误解了for/in的工作原理以及数组的缺陷。我做了更多的研究,发现我的问题已经在这里得到了回答——我只是不知道正确的搜索方法!下面是答案:再次感谢您的帮助…现在要更改我的代码!
my opt, val: language, undefined
my opt, val: scrollHeight, undefined
my opt, val: isTextEdit, undefined
my opt, val: currentStyle, undefined
my opt, val: document, undefined
for (var idx=0; idx< mySelect.options.length; idx++)
{
  YAHOO.log('my idx, val: ' + idx + ', ' + mySelect.options[idx].value);
}