Javascript 带“选择”的元素的值;e、 “价值”;vs";e、 选项[e.selectedIndex].value“;
给定HTML:Javascript 带“选择”的元素的值;e、 “价值”;vs";e、 选项[e.selectedIndex].value“;,javascript,html,html-select,selectedvalue,selectedindex,Javascript,Html,Html Select,Selectedvalue,Selectedindex,给定HTML: <select id="mySelect"> <option value="1">test1</option> <option value="2">test2</option> <option value="3">test3</option> </select> 要获取select的值,我可以使用e.value和e.options[e.selectedInde
<select id="mySelect">
<option value="1">test1</option>
<option value="2">test2</option>
<option value="3">test3</option>
</select>
要获取select的值,我可以使用e.value
和e.options[e.selectedIndex].value
我知道e.options[e.selectedIndex].value
将为我提供所选的值(1,2或3),e.options[e.selectedIndex].text
将根据选择的值为我提供test1、test2和test3
只使用e.value
可以吗?这是旧浏览器的问题吗?哪个更正确:
e.value
vse.options[e.selectedIndex].value
自1998年文档对象模型(DOM)级别1规范以来,
HTMLSelectElement
接口至少包含值
属性
然而,正如中所解释的,问题在于HTML4.01规范含糊不清:
HTML4.01确实没有显式指定值属性
对于SELECT,但它似乎暗示:
- “菜单”是一种控件类型。()
- 每个控件都有一个初始值和一个当前值 哪些是字符串“()
- 而
可能有一个SELECT
属性,该属性表示一个值。 ()onchange
SELECT
的值确实不起作用
返回一个与当前选定值对应的字符串
选项
(…)如果HTML4.01更加明确,可能不会有问题
这在以下定义中是固定的
您可以在这里看到它的定义:
- ,W3C建议,1998年10月1日 当前窗体控件值
- ,W3C建议,2003年1月9日 当前表单控件值(即当前选定选项的值),如果选择了多个选项,则这是第一个选定选项的值
- 在HTML5中,W3C候选推荐
IDL属性在获取时必须返回 in中第一个具有 设置为true(如果有)。如果没有,那一定是 返回空字符串value
comp.lang.javascript
新闻组的一些旧(~2005)线程,还提到.value
访问在4(即2000年之前)中不受支持,而一些其他移动和桌面浏览器甚至在当时也被认为是“旧”的
结论(由@Oriol的DOM规范摘录支持):今天使用它是完全安全的。我不明白为什么不使用标准
e.value
。没有记录任何浏览器兼容性问题:@Rikard正如您所建议的,这在非常旧的浏览器中是一个问题。你不能在选择本身上使用.value
,你必须得到所选的选项并获取该选项的值。@Rikard一个快速的google发现它在Netscape 4中根本不起作用,IE6和IE7有一些奇怪之处,尽管它没有完全被破坏。@RickHitchcock:您需要了解DOM属性和HTML属性之间的区别。选择元素@Bergi,我站着更正!很高兴知道select.value可以安全使用。但这是HTML5的新功能吗?这里所有的讨论都说我们应该使用选项。。。已选择索引
:
var e = document.getElementById('mySelect');