4

今日、DOM select 要素の JavaScript 'options' プロパティの IE8 の実装で奇妙な動作を発見しました。

次の HTML があるとします。

<select id="sel"><option value="val">An option</option></select>

そしてJavaScript:

var sel = document.getElementById('sel');
alert(sel === sel.options); //alerts 'true' in IE8

明らかに、IE8 で select の実装を書いている賢い人は、select 要素にインデクサーを書き、それを独自の「オプション」プロパティとして JavaScript に公開しました。

私の質問は、JavaScript 言語仕様によると、これは期待される機能ですか? これは既知のバグですか? 'options' プロパティを配列ではなくオブジェクトとして扱い続ける必要がありますか?

これは、'options' プロパティが JavaScript 配列として公開されている Firefox 3.5、Chrome 1.0、または Safari 3.1 で select DOM 要素がどのように動作するかではありません...

参考までに、要素をラップするために 'options' プロパティを jQuery コンストラクターに渡したときに、これに遭遇しました。(Firefox、Chrome、および Safari を使用して発生したような) X 要素を持つ jQuery オブジェクトの予想される結果ではなく、1 つの要素 (select 要素自体) を持つ jQuery オブジェクトが返されました。

4

1 に答える 1