具有"e.value"vs"e.options [e.selectedIndex] .value"的select元素的值

Rik*_*ard 4 html javascript html-select selectedindex selectedvalue

鉴于HTML:

<select id="mySelect">
    <option value="1">test1</option>
    <option value="2">test2</option>
    <option value="3">test3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

和javascript:

var e = document.getElementById('mySelect');
Run Code Online (Sandbox Code Playgroud)

要获得我可以使用的选择的值e.valuee.options[e.selectedIndex].value.

我知道e.options[e.selectedIndex].value会给我选择的值(1,2或3),并e.options[e.selectedIndex].text根据选择的内容给我test1,test2,test3.

可以使用e.value吗?这是旧浏览器中的问题吗?
哪个更正确:e.valuevs e.options[e.selectedIndex].value

的jsfiddle

Ori*_*iol 6

HTMLSelectElement接口value至少包括自1998年以来的文档对象模型(DOM)级别1规范以来的属性.

但是,就像在这个w3c邮件列表中解释的那样,问题是HTML4.01规范含糊不清:

确实,HTML4.01没有明确指定SELECT的值属性,但似乎暗示:

  • "菜单"是一种控件类型.(HTML4.01 17.2.1)

  • "每个控件都有一个初始值和一个当前值,两者都是字符串"(HTML4.01 17.2)

  • 并且SELECT可能具有onchange暗示值的属性.(HTML4.01 17.6)

但是没有提到值代表什么,也没有提到初始值或默认值.

但是,在IE5和Mozilla中检查,SELECT确实返回一个对应于当前所选值的字符串 OPTION.

(...)如果HTML4.01更明确,可能不会有问题.

这在以下定义中得到修复.

你可以在这里看到它:

所以我认为使用它是安全的.