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。