这是一个简单的问题,但我找不到任何参考,所以在这里。
假设我有一个选择元素:
<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?中最受欢迎的两个答案使用了第一种方法。
答案 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?