郭某人的网站

关于 / 留言

HTML select 元素 selectedIndex 和 value 属性的坑

HTML 下拉选择框 select 元素默认 selectedIndex 不为 -1


HTML 中的 select 元素可以让用户以下拉选择的方式选择固有的选项,这个元素在开发中有点坑,这里说明一下。

举个例子,假设页面上有如下代码:

<select id="select_1">
<option>未选择 1</option>
<option value="">未选择 2</option>
<option value="1">选项 1</option>
<option value="2">选项 2</option>
<option value="3">选项 3</option>
</select>
 
<script>
var select_1 = document.getElementById("select_1")
console.log("index:" + select_1.selectedIndex + ",value:" + select_1.value)
 
select_1.value = ""
console.log("index:" + select_1.selectedIndex + ",value:" + select_1.value)
 
select_1.value = "未选择 1"
console.log("index:" + select_1.selectedIndex + ",value:" + select_1.value)
 
select_1.value = "1"
console.log("index:" + select_1.selectedIndex + ",value:" + select_1.value)
 
select_1.selectedIndex = "-1"
console.log("index:" + select_1.selectedIndex + ",value:" + select_1.value)
</script>

以上输出结果依次是这样的:

index:0,value:未选择 1
index:1,value:
index:0,value:未选择 1
index:2,value:1
index:-1,value:

通过改变 select 元素的 selectedIndex 属性或 value 属性可以改变其选中的项。

和我预想中的不一样,select 元素会默认选中第一项,此时其 selectedIndex 属性为 0,而不是 -1;当 option 元素的 value 属性不存在时,浏览器将会用其内联文本当作 value 值,依然可通过赋予这个属性以内联文本的值来选中这一项;如果想要让 select 元素不选中任何项,使其置空,则需要单独用代码设定其 selectedIndex 属性值为 -1 来实现。

另外,如果 option 元素具有其 value 属性,那就不能使用让其 value 属性设置为内联文本的方法来选中它;如果给 value 属性设置一个不存在的值,那么 select 元素会被置空,此时其 selectedIndex 属性为 -1。


最后更新时间:2025/06/26 10:29

如果您喜欢此文章,或此文章给您带来了任何帮助,请考虑对我进行资金赞赏,您的支持将会成为我坚持的力量。

注意!你的赞赏转账请考虑再三后支付,此收款不作任何形式的退款。