3

这是一个简单的问题,但我找不到任何参考,所以在这里。

假设我有一个选择元素:

<select id="sel">
    <option value="1">1</option>
    <option value="2">2</option>
</select>

现在我想得到它选择的选项的value. 大多数情况下,我看到这种片段被使用:

var sel = document.getElementById('sel');
console.log( sel.options[sel.selectedIndex].value ); //1

效果很好。但是,我发现select元素也有一个 value 属性:

console.log( sel.value ); //1

请参阅这两个示例的小提琴

第二种形式不仅简单得多,而且可以一直使用到 IE6(是的,我确实对此进行了测试,这里是IE6 友好版本)。

为什么第一种方法被广泛接受是有原因的吗?第二种方法是否存在一些不兼容或极端情况问题?

附言。我的“最常用方法”论文主要基于个人经验,但作为参考,Get selected value in dropdown list using JavaScript? 中最受好评的两个答案?使用第一种方法。

4

2 回答 2

3

MDN 页面告诉我们

options nsIDOMHTMLOptionsCollection 该元素包含的元素集。只读。

selectedIndex long 第一个选定元素的索引。

value DOMString此表单控件的值,即第一个选定选项的值。

然而它也说

selectedOptions 未实现(请参阅错误 596681) HTMLCollection 已选择的选项集。HTML5

因此,如果你想要一个多选但通用的兼容性,你将不得不循环options,但如果你有一个单选,sel.options[sel.selectedIndex].value并且sel.value是等价的,但先验与循环的形式“更相似” for多选需要。

于 2013-03-27T14:33:18.603 回答
1

第一个选项被广泛接受只是因为它更广为人知。第二个选项非常好。

您是否验证过它可以在 Navigator 4 上运行?

于 2013-03-27T15:21:21.820 回答