提问人:Fabrício Matté 提问时间:3/27/2013 最后编辑:CommunityFabrício Matté 更新时间:3/27/2013 访问量:506
选择元素是否具有标准值属性?
Do select elements have a standard value property?
问:
这是一个简单的问题,但我找不到任何参考资料,所以就这样吧。
假设我有一个 select 元素:
<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
请参阅小提琴和这两个示例。
第二种形式不仅简单得多,而且一直可以追溯到 IE6(是的,我确实对此进行了测试,这是 IE6 友好版本)。
第一种方法被更广泛地接受是有原因的吗?第二种方法是否存在一些不兼容或极端情况问题?
我的“最常用的方法”论文主要基于个人经验,但作为参考,使用 JavaScript 在下拉列表中获取所选值中两个最受好评的答案? 使用第一种方法。
答:
3赞
Paul S.
3/27/2013
#1
MDN 页面告诉我们
options
nsIDOMHTMLOptionsCollection此元素包含的元素集。只读。
selectedIndex
长第一个选定元素的索引。
value
DOMString(DOMString)此窗体控件的值,即第一个选定选项的值。
但是,它也说
selectedOptions
未实现(参见 bug 596681) HTMLCollection 所选选项集。HTML5的
因此,如果要具有多选但通用的兼容性,则必须循环,但如果您有单选,并且是等效的,但先选与多选循环的形式“更相似”。options
sel.options[sel.selectedIndex].value
sel.value
评论
0赞
Fabrício Matté
3/27/2013
谢谢,看到 MDN 中 的属性定义让我松了一口气,因为它是一个标准属性,而不是 HTML5 中引入的属性之一。我想我只是直到不久前才意识到这一点。select
value
1赞
Kernel James
3/27/2013
#2
第一种选择之所以被广泛接受,只是因为它更广为人知。第二个选项是完全可以的。
您是否验证过它适用于 Navigator 4?
评论
0赞
Fabrício Matté
3/28/2013
不幸的是,我只支持旧的IE,因为它在世界某些地方被广泛使用。对于IE以外的其他主流浏览器,我只使用最新版本进行测试。即使与 IE6 的使用率相比,Firefox 2 的使用率也应该接近于零。
评论
value