构造HTMLOptionElement时,“ selected”和“ defaultSelected”有什么区别?

Sin*_*jai 5 javascript

MDN

defaultSelected-可选
一个布尔值,用于设置选定的属性值,即,使其成为首次加载页面时在元素中选择的默认值。如果未指定,则使用默认值false。请注意,如果值为true,则尚未将选项设置为selected。

selected-可选
布尔值,用于设置选项的选择状态;默认值为false(未选择)。如果省略,则即使defaultSelected参数为true,也不会选择该选项。

这对我来说还不清楚。defaultSelected确定是否是“这将是选定的默认值”,但是一句话之后它说“如果尚未选择,则值为true不会将选项设置为selected”。所以...它没有设置它为选中状态吗?如果它已经被选中,它只会将其设置为选中吗?

selected还要求设置选定状态。如果省略,则不管defaultSelected,都不会选择该选项。所以... defaultSelected什么都没有?

这里发生了什么?

pro*_*ams 4

defaultSelected属性表示元素的初始(默认)选择状态,并对应于所选的HTML 属性。该selected属性表示当前的选择状态,这就是用户在浏览器中实际看到的选择状态。

当用户选择一个选项时,仅selected更改属性,而特性和defaultSelected属性保持不变(但仍可以通过编程方式更改它们)。例如,您可以使用它来将某些设置重置为默认值。

所以我想说你通常会使用

 new Option(text, value, true, true)
Run Code Online (Sandbox Code Playgroud)

或者

new Option(text, value, false, false)
Run Code Online (Sandbox Code Playgroud)

为第三个和第四个参数设置不同的值意味着您创建一个默认值但当前未选择的选项,反之亦然。

我发现这些文档也相当令人困惑,但我想

defaultSelected - <...> 请注意,如果尚未选择选项,则 true 值不会将选项设置为已选择

意思就是 - 如果将 设为defaultSelectedtrue,并不意味着该选项实际上会被选择,它只是将该选项设置为默认选择值。要选择它,您selected还必须设置属性。

此外,当您selected在 HTML 中添加属性时,相应的 DOM 元素会将 和defaultSelected属性selected设置为true,因此初始值和当前选择的值是相同的。

以下是有关 DOM 元素的属性和属性的相关问题的有用答案:/sf/answers/420281991/