Skip to content

选择框编程

HTMLSelectElement

属性或方法说明
add(newOption, relOption)relOption 之前向控件添加新的 option
multiple布尔值,表示是否允许多选
options控件中所有 option 元素的 HTMLCollection
remove(index)移除给定位置的选项
selectedIndex选中项基于 0 的索引值,如果没选中则为 -1
对于多选,始终是一个选项的索引
size选择框中可见的行数
value选中项的 value,如果为多选,则第一个选中项的 value

HTMLOptionElement

属性说明
index选项在 options 集合中的索引
label选项的标签,等价于 HTMLlabel 属性
selected布尔值,表示是否选中了当前选项。把此属性设置为 true 会选中此项
text选中的文本
value选中的值

value 的情况

html
<select id='checked' multiple>
    <option value="a">1</option>
    <option value="">2</option>
    <option>3</option>
</select>
  1. 选中第一个,则值为 a
  2. 选中第二个,则值为空字符串
  3. 选中第三个,则值为 3

选项处理

  1. 对于单选,获取 selectedIndex 即可

    js
    const selectedOption = selectbox.options[selectbox.selectedIndex]
  2. 对于多选,需要循环获取

    js
    function getSelectedOptions(selectbox) {
        const result = []
        for (const option of selectbox.opstions) {
            if (option.selected) {
                result.push(option)
            }
        }
        return result
    }

添加选项

1. 创建新的选项
  • DOM 创建

    js
    const newOption = document.createElement('option')
    newOption.text = 'new text'
    newOption.value = 'new value'
  • 通过构造函数

    js
    const newOption = new Option('new text', 'new value')
2. 添加进 selectbox 中
  • js
    selectbox.appendChild(newOption)
  • js
    // 添加至末尾时,第二个参数传 undefined,兼容性最好
    selectbox.add(newOption, undefined)

移除选项

  • js
    selectbox.removeChild(selectbox.options[0])
  • js
    selectbox.remove(0)
  • js
    selectbox.options[0] = null