首先,在HTML层面我们需要定义一个主控(或称为“全选”)checkbox以及一系列需要被控制状态的子复选框:
html
<input type="checkbox" id="masterCheckbox"> 全部选定/取消
<div>
<input class="slaveCheckbox" type="checkbox">
<label>项目一</label>
<!-- 更多个项... -->
<input class="slaveCheckbox" type="checkbox">
<label>项目N</label>
</div>
然后通过JavaScript对这些元素进行事件监听并同步它们的状态关系。以下是一种可能的具体实现方式:
```javascript
// 获取主控复选框及所有从属复选框节点集合
var master Checkbox = document.getElementById('masterCheckbox');
var slaveCheckboxes = document.querySelectorAll('.slaveCheckbox');
// 给主控添加change事件处理器以触发联动更新逻辑
masterCheckbox.addEventListener('click', function() {
// 根据主控是否勾选决定其他全部从属复选框的状态
var isChecked = this.checked;
for (let i = 0; i < slaveCheckboxes.length; ++i) {
slaveCheckboxes[i].checked = isChecked;
}
});
// 同时为每一个从属复选框也设置change事件处理器以便于实时反馈到主控上判断整体情况
for(let i=0;i
let allChecked=true;
// 检查是否有任何一个从属复选框未被勾选
for(var j=0;j
allChecked=false;
}
// 将检查结果应用至主控复选框
masterCheckbox.checked=allChecked;
});
}
这样就实现了基本的全选与反选功能:当点击主控复选框时,会自动改变所有从属复选框的选择状况;而单独修改任意从属复选框的状态,则会影响到主控复选框——如果所有的从属都被选取则主控也会处于选取状态,只要有任一项没有被选取,那么主控就会变为非选取状态。
以上代码展示了基于原生JS的基本思路,对于更复杂的交互需求如使用jQuery或其他前端库亦可灵活转换此思想,并结合CSS样式优化视觉体验,进一步提升用户界面友好度和互动性。
标签: js复选框全选反选