<!DOCTYPE html>
<html>
<head>
<title>全选、单选、反选</title>
</head>
<body>
<input type="checkbox" id="selectAll"> 全选<br>
<input type="checkbox" class="item"> 选项1<br>
<input type="checkbox" class="item"> 选项2<br>
<input type="checkbox" class="item"> 选项3<br>
<!-- 更多选项... -->
<script>
const selectAllCheckbox = document.getElementById('selectAll');
const itemCheckboxes = document.getElementsByClassName('item');
// 全选
selectAllCheckbox.addEventListener('change', function() {
for (let i = 0; i < itemCheckboxes.length; i++) {
itemCheckboxes[i].checked = this.checked;
}
});
// 单选
for (let i = 0; i < itemCheckboxes.length; i++) {
itemCheckboxes[i].addEventListener('change', function() {
let allChecked = true;
for (let j = 0; j < itemCheckboxes.length; j++) {
if (!itemCheckboxes[j].checked) {
allChecked = false;
break;
}
}
selectAllCheckbox.checked = allChecked;
});
}
// 反选
function toggleSelectAll() {
for (let i = 0; i < itemCheckboxes.length; i++) {
itemCheckboxes[i].checked = !itemCheckboxes[i].checked;
}
let allChecked = true;
for (let j = 0; j < itemCheckboxes.length; j++) {
if (!itemCheckboxes[j].checked) {
allChecked = false;
break;
}
}
selectAllCheckbox.checked = allChecked;
}
</script>
</body>
</html>
上述事例创建了一个全选复选框和多个选项复选框。通过 JavaScript 实现了全选、单选和反选的功能。
在 JavaScript 部分,我们首先获取到全选复选框和选项复选框的引用。然后,为全选复选框添加一个 change 事件监听器,当选择状态发生变化时,将其状态应用到所有选项复选框上。
接着,使用一个循环为每个选项复选框添加 change 事件监听器,当任意一个选项复选框的状态发生变化时,判断是否所有选项复选框都被选中,如果是,则将全选复选框的状态设为选中;如果不是,则将全选复选框的状态设为未选中。
最后,我们定义了一个名为 toggleSelectAll
的函数来实现反选的功能。该函数会遍历所有选项复选框,并将其选中状态取反。然后,再次判断是否所有选项复选框都被选中,并根据结果设置全选复选框的状态。