[英]How do I change the “selected” attribute on an option tag with javascript
[英]What happens if I change attribute “selected” on an <option> element via Javascript?
如果我通过Java脚本更改了<option>
元素上的“ selected”属性,应该怎么办?
例
HTML
<select size="1" id="myselect">
<option>pepper</option>
<option selected="selected">salt</option>
</select>
使用Javascript
var selectObj = document.getElementById('myselect');
selectObj.options[1].removeAttribute('selected');
selectObj.options[0].setAttribute('selected','selected');
我找不到有关此操作的任何文档(尽管它似乎更改了下拉框中的所选选项)。
我在Firefox中进行了尝试,发现在<option>
上设置属性有时会选择该选项,而有时不会,而在Chrome中它总是起作用。 那应该怎么办呢? 这在任何规格中都有描述吗?
注意:
我知道我可以通过JS使用option.selected=true/false
或select.value=<newval>
来更改选择。 因此,我的问题不是要找出如何更改选择的内容。 我只想了解如果操作该属性会发生什么。
HTML 5.1规范说,对于option元素
选项元素的选择状态为布尔状态,最初为false。 ...每当添加选项元素的selected属性时,其选择必须设置为true。
因此,当调用setAttribute(“ selected”,...)时,content属性获得属性值,并且元素的“ selectedness”状态可以更改。 请注意,尽管它说在添加元素selected属性时将option元素的selectedness设置为true。 这意味着,如果在已经具有selected属性的元素上调用setAttribute('selected','selected')
,则不需要更改元素或任何其他option元素的选择。
接下来是更改元素的“选择度”的后果。
选定的IDL属性在获取时,如果元素的选择为true,则必须返回true,否则返回false。
(如果您不熟悉该术语,那么“ IDL属性”就是大多数人认为的“属性”。例如opt.selected
)
然后,对于select元素,它说:
如果不存在multiple属性,则只要将select元素的选项列表中的option元素的selectivity设置为true,...,用户代理必须将其选项列表中所有其他选项元素的selectness设置为false。
和
selectedOptions IDL属性必须返回一个以select节点为根的HTMLCollection,该HTMLCollection的过滤器与将selectivity设置为true的选项列表中的元素匹配。
selectedIndex IDL属性在获取时必须以树顺序返回选项列表中第一个选项元素的索引,且其选择度设置为true(如果有)。 如果没有,则它必须返回-1。
值IDL属性在获取时必须以树顺序返回选项列表中第一个选项元素的值,该选项的选择度设置为true(如果有)。 如果没有,则必须返回空字符串。
在构造表单数据集期间提交表单时:
如果field元素是select元素,则对于select值为true且未禁用的select元素的select元素列表中的每个option元素,将一个条目添加到表单数据集,其名称为name,值为选项元素作为值,并键入type。
那涵盖了您需要知道的内容吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.