select元素是否具有标准值属性?

时间:2013-03-27 14:24:05

标签: javascript dom selectedvalue

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

假设我有一个选择元素:

<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元素也有值属性:

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

请参阅fiddle两个示例。

第二种形式不仅更简单,它也可以一直回到IE6(是的,我确实测试了它,这里是IE6 friendly version)。

为什么第一种方法被广泛接受是否有原因?第二种方法是否存在一些不兼容或角落问题?

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

2 个答案:

答案 0 :(得分:3)

MDN page告诉我们

  

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

     

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

     

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

然而它也说

  

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

因此,如果您想要具有多选但通用兼容性,则必须循环options,但如果您有单选,sel.options[sel.selectedIndex].value和{{1}是等价的,但是先验与多选的循环形式“更相似”。

答案 1 :(得分:1)

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

您是否确认它适用于Navigator 4?