如果我更改属性,会发生什么情况;精选;关于<;选项>;元素通过Javascript?
如果我通过Javascript更改如果我更改属性,会发生什么情况;精选;关于<;选项>;元素通过Javascript?,javascript,html,dom,html-select,Javascript,Html,Dom,Html Select,如果我通过Javascript更改元素上的属性“selected”,会发生什么 示例 HTML 我找不到任何关于这应该做什么的文档(尽管它似乎改变了下拉框中所选的选项) 我在Firefox中尝试过,发现在上设置属性有时会选择该选项,有时则不会,而在Chrome中它总是有效的。那么它应该做什么呢?这在任何规范中都有描述吗 注: 我知道我可以通过JS更改选择,例如使用选项。selected=true/false或select.value=。所以我的问题不是如何改变选择;我只是想了解如果我操作属性会
元素上的属性“selected”,会发生什么
示例
HTML
我找不到任何关于这应该做什么的文档(尽管它似乎改变了下拉框中所选的选项)
我在Firefox中尝试过,发现在
上设置属性有时会选择该选项,有时则不会,而在Chrome中它总是有效的。那么它应该做什么呢?这在任何规范中都有描述吗
注:
我知道我可以通过JS更改选择,例如使用
选项。selected=true/false
或select.value=
。所以我的问题不是如何改变选择;我只是想了解如果我操作属性会发生什么。HTML5.1规范说,对于元素
选项元素的可选择性最初是一种布尔状态
假的。。。每当添加选项元素的选定属性时,
它的selectedness必须设置为true
因此,当调用setAttribute(“selected”,…)时,content属性获得属性值,元素的“selectedness”状态可能会改变。请注意,当添加元素selected属性时,option元素的selectedness设置为true。这意味着,如果对已具有选定属性的元素调用setAttribute('selected','selected')
,则不需要更改元素或任何其他选项元素的选择性
接下来是改变元素“选择性”的结果
如果
元素的选择性为true,否则为false
(如果您不熟悉术语,“IDL属性”是大多数人认为的“属性”。例如,opt.selected
)
然后,对于元素,它说:
如果缺少多属性,则只要
select元素的选项列表的selectedness设置为true。。。
用户代理必须设置所有其他选项的可选择性
将其选项列表中的元素设置为false
及
selectedOptions IDL属性必须返回HTMLCollection根目录
在“选择”节点,其筛选器与列表中的元素匹配
将其selectedness设置为true的选项
获取时,selectedIndex IDL属性必须返回
选项列表中按树顺序排列的第一个选项元素
它的selectedness设置为true(如果有)。如果没有,那一定是
返回−一,
获取时,value IDL属性必须返回
选项列表中按树顺序排列的第一个选项元素
selectedness设置为true(如果有)。如果没有,那一定是
返回空字符串
以及在提交表格时,在:
如果field元素是select元素,那么对于每个option元素
在select元素的选项列表中,其selectedness为true,并且
如果未禁用,请使用
name作为名称,option元素的值作为值,以及
类型作为类型
这是否涵盖了您需要知道的内容?生成HTML很好,但我不会依赖于此更改选定的值,属性往往是初始值,并不总是更新页面的实时版本。@vittore:是的,我也找到了该页面。但是,它没有说明更改属性“selected”意味着什么。因此,我的问题是…它也可以在firefox上工作,但它正在缓存js文件,看起来它没有改变。我试过你在我的本地主机上说的话,它的工作原理与chromeThanks相同。然而,它只讨论了“IDL属性”,正如您所解释的,这些属性在Javascript中被称为“属性”。我的问题是关于“HTML属性”(使用getAttribute/setAttribute访问)。所以这似乎并没有回答我的问题:-)。引用的第一段是关于内容属性(getAttribute/setAttribute)。抱歉,如果不清楚的话。@sleske-我已经稍微改写了答案,以便更清楚地说明与
setAttribute
方法相关的部分。谢谢。因此,从本质上讲,规范只说“selected”设置初始值,如果稍后添加元素,它会导致元素变为selected。特别是,删除属性没有定义的含义。顺便说一句,Firefox没有遵循规范:通过JS添加属性“selected”会选择该选项,但前提是用户没有手动更改该选项。一旦用户更改了选项,设置属性就不会选择元素(使用property/IDL属性“selected”会起作用)。
<select size="1" id="myselect">
<option>pepper</option>
<option selected="selected">salt</option>
</select>
var selectObj = document.getElementById('myselect');
selectObj.options[1].removeAttribute('selected');
selectObj.options[0].setAttribute('selected','selected');