Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带“选择”的元素的值;e、 “价值”;vs";e、 选项[e.selectedIndex].value“;_Javascript_Html_Html Select_Selectedvalue_Selectedindex - Fatal编程技术网

Javascript 带“选择”的元素的值;e、 “价值”;vs";e、 选项[e.selectedIndex].value“;

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

给定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.selectedIndex].value

我知道
e.options[e.selectedIndex].value
将为我提供所选的值(1,2或3),
e.options[e.selectedIndex].text
将根据选择的值为我提供test1、test2和test3

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


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

然而,正如中所解释的,问题在于HTML4.01规范含糊不清:

HTML4.01确实没有显式指定值属性 对于SELECT,但它似乎暗示:

  • “菜单”是一种控件类型。()

  • 每个控件都有一个初始值和一个当前值 哪些是字符串“()

  • SELECT
    可能有一个
    onchange
    属性,该属性表示一个值。 ()

但是没有提到价值代表什么,也没有提到 初始值或默认值可能为

然而,在IE5和Mozilla中检查时,
SELECT
的值确实不起作用 返回一个与当前选定值对应的字符串
选项

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

这在以下定义中是固定的

您可以在这里看到它的定义:

  • ,W3C建议,1998年10月1日

    当前窗体控件值

  • ,W3C建议,2003年1月9日

    当前表单控件值(即当前选定选项的值),如果选择了多个选项,则这是第一个选定选项的值

  • 在HTML5中,W3C候选推荐

    value
    IDL属性在获取时必须返回 in中第一个具有 设置为true(如果有)。如果没有,那一定是 返回空字符串

因此,我认为使用它是安全的。

来自
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');