📅  最后修改于: 2023-12-03 15:08:20.167000             🧑  作者: Mango
在 HTML 中,Select 选项一般是单选的,不支持多选。但是,我们可以通过 JavaScript 来实现在 Select 中使用 Checkbox 进行多选的功能。
首先,在 HTML 中添加一个 Select 元素,以及一些 Checkbox 元素来表示选项:
<select id="mySelect" multiple>
<option value="1">选项1</option>
<option value="2">选项2</option>
<option value="3">选项3</option>
</select>
<label for="option1">选项1</label>
<input type="checkbox" id="option1" value="1">
<label for="option2">选项2</label>
<input type="checkbox" id="option2" value="2">
<label for="option3">选项3</label>
<input type="checkbox" id="option3" value="3">
注意,这里要在 Select 上添加 multiple 属性来支持多选。
接下来,我们可以使用 JavaScript 来监听 Checkbox 的选中状态,然后根据选中状态来更新 Select 中的选项:
function updateSelect() {
const select = document.getElementById('mySelect');
const selectOptions = select.options;
for (let i = 0; i < selectOptions.length; i++) {
selectOptions[i].selected = false;
}
const option1 = document.getElementById('option1');
const option2 = document.getElementById('option2');
const option3 = document.getElementById('option3');
if (option1.checked) {
selectOptions[0].selected = true;
}
if (option2.checked) {
selectOptions[1].selected = true;
}
if (option3.checked) {
selectOptions[2].selected = true;
}
}
const checkboxes = document.querySelectorAll('input[type="checkbox"]');
for (const checkbox of checkboxes) {
checkbox.addEventListener('change', updateSelect);
}
这里的 updateSelect 函数会遍历 Select 中的每一个选项,将其选中状态设为 false。然后,根据 Checkbox 的选中状态来更新 Select 中的选项。最后,我们使用 addEventListener 来监听 Checkbox 的 change 事件,当 Checkbox 的状态发生变化时,就调用 updateSelect 函数去更新 Select。
完整代码片段如下:
<!DOCTYPE html>
<html>
<head>
<title>Select Checkbox</title>
</head>
<body>
<select id="mySelect" multiple>
<option value="1">选项1</option>
<option value="2">选项2</option>
<option value="3">选项3</option>
</select>
<label for="option1">选项1</label>
<input type="checkbox" id="option1" value="1">
<label for="option2">选项2</label>
<input type="checkbox" id="option2" value="2">
<label for="option3">选项3</label>
<input type="checkbox" id="option3" value="3">
<script>
function updateSelect() {
const select = document.getElementById('mySelect');
const selectOptions = select.options;
for (let i = 0; i < selectOptions.length; i++) {
selectOptions[i].selected = false;
}
const option1 = document.getElementById('option1');
const option2 = document.getElementById('option2');
const option3 = document.getElementById('option3');
if (option1.checked) {
selectOptions[0].selected = true;
}
if (option2.checked) {
selectOptions[1].selected = true;
}
if (option3.checked) {
selectOptions[2].selected = true;
}
}
const checkboxes = document.querySelectorAll('input[type="checkbox"]');
for (const checkbox of checkboxes) {
checkbox.addEventListener('change', updateSelect);
}
</script>
</body>
</html>
以上就是在 Select Option 中使用 Checkbox 的 JavaScript 实现方法。