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

Do select elements have a standard value property?

提问人:Fabrício Matté 提问时间:3/27/2013 最后编辑:CommunityFabrício Matté 更新时间:3/27/2013 访问量:506

问:

这是一个简单的问题,但我找不到任何参考资料,所以就这样吧。

假设我有一个 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 在下拉列表中获取所选值中两个最受好评的答案? 使用第一种方法。

JavaScript DOM SelectedValue

评论

0赞 zzzzBov 3/27/2013
选择多个值时会发生什么情况?
0赞 Paul S. 3/27/2013
相关 MDN 页面: developer.mozilla.org/en-US/docs/DOM/HTMLSelectElement
0赞 Fabrício Matté 3/27/2013
@PaulS。明白了。返回第一个选定选项的值。你可以在答案中使用它。value
0赞 zzzzBov 3/27/2013
@FabrícioMatté,当您忽略极端情况时,询问极端情况的问题并不是一个好主意。
0赞 Fabrício Matté 3/27/2013
@zzzzBov好吧,我的坏,那么让我们考虑多个值。

答:

3赞 Paul S. 3/27/2013 #1

MDN 页面告诉我们

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

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

value DOMString(DOMString)此窗体控件的值,即第一个选定选项的值。

但是,它也说

selectedOptions 未实现(参见 bug 596681) HTMLCollection 所选选项集。HTML5的

因此,如果要具有多选但通用的兼容性,则必须循环,但如果您有单选,并且是等效的,但先选与多选循环的形式“更相似”。optionssel.options[sel.selectedIndex].valuesel.value

评论

0赞 Fabrício Matté 3/27/2013
谢谢,看到 MDN 中 的属性定义让我松了一口气,因为它是一个标准属性,而不是 HTML5 中引入的属性之一。我想我只是直到不久前才意识到这一点。selectvalue
1赞 Kernel James 3/27/2013 #2

第一种选择之所以被广泛接受,只是因为它更广为人知。第二个选项是完全可以的。

您是否验证过它适用于 Navigator 4?

评论

0赞 Fabrício Matté 3/28/2013
不幸的是,我只支持旧的IE,因为它在世界某些地方被广泛使用。对于IE以外的其他主流浏览器,我只使用最新版本进行测试。即使与 IE6 的使用率相比,Firefox 2 的使用率也应该接近于零。