Pau*_*aul 1 javascript firefox select internet-explorer
在我的JavaScript代码中,我试图列出Select的选项(及其值).这是一段代码(我正在使用YUI2库...日志语句只是将文本放入记录器中):
for (var opt in mySelect.options)
{
YAHOO.log('my opt, val: ' + opt + ', ' + mySelect.options[opt].value);
}
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
但在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
Run Code Online (Sandbox Code Playgroud)
我至少可以说有点惊讶.我甚至尝试过(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);
}
Run Code Online (Sandbox Code Playgroud)
IE也运行正常.
为什么第一种方式不起作用?我认为for/in循环的工作方式与for循环相同.
谢谢,
保罗
for/ inloops循环遍历对象中的每个属性.
您没有在Firefox中看到这些属性,因为它们被标记为[DontEnum].
您应该使用普通for循环来遍历数组.
对于普通数组,你可以通过跳过键来取消for/ in,如果!obj.hasOwnProperty(key),但我不确定这是否适用于DOM对象.
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |