实例:一组数据复选框全部被勾上,则全选框要勾上,一组数据复选框没有全部被勾上,则全选框不勾上
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <input type="checkbox" id="ck-all">全选框 <div id="ck-zi"> <input type="checkbox">张三 <br/> <input type="checkbox">李四 <br/> <input type="checkbox">王二麻 </div> <script> var ckAll = document.getElementById('ck-all') //获取全选框的对象 var ckArr = document.getElementById('ck-zi').getElementsByTagName('input') //这里获得子复选框的对象,并放入数组中 for (var i = 0; i < ckArr.length; i++) { //对所有的子复选框进行监听 ckArr[i].onclick = function() { // 设置一个标志位,默认他成立 var flag = true; for (var i = 0; i < ckArr.length; i++) { //在子复选框的监听事件里:遍历整个子复选框,如果存在不同的属性,就改变标志位为不成立 if (!ckArr[i].checked) { flag = false; break; } } //全选框通过标志位来判断子复选框的状态,进而修改属性 ckAll.checked = flag; } } </script> </body> </html>
这个例子可以解决很多类似的问题,只要是主元素需要根据一组子元素的变换而变化的时候,就可以使用这个例子