在我的JavaScript代码中,我试图列出Select的选项(及其值)。这是一段代码(我正在使用YUI2库...日志语句只是将文本放入记录器中):
for (var opt in mySelect.options)
{
YAHOO.log('my opt, val: ' + opt + ', ' + mySelect.options[opt].value);
}
在Firefox中,我得到以下(正确的)输出:
my opt, val: 0, 2
my opt, val: 1, 1
my opt, val: 2, 3
my opt, val: 3, 4
my opt, val: 4, 0
但在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);
}
然后IE工作正常。
为什么第一种方式不起作用?我认为for / in循环的工作方式与for循环相同。
谢谢,
保
答案 0 :(得分:5)
for
/ in
循环遍历对象中的每个属性
您没有在Firefox中看到这些属性,因为它们标记为[DontEnum]
。
您应该使用普通的for
循环来遍历数组
对于普通数组,如果for
跳过键,则可以通过跳过in
/ !obj.hasOwnProperty(key)
循环,但我不确定这是否适用于DOM对象。