需求分析:
切入点:交互 1.点击上方选择框:让下方选择框列表的checked值与自身保持一致 2.点击下方选择框列表:判断上方选择框列表状态 选中:所有的选择框checked值都是true 未选中:只要有一个选择框checked值是false
效果图
完整代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } table { border-collapse: collapse; border: 1px solid #c0c0c0; width: 500px; margin: 100px auto; text-align: center; } th { background-color: #09c; font: bold 16px "微软雅黑"; color: #fff; height: 24px; } td { border: 1px solid #d0d0d0; color: #404060; padding: 10px; } </style> </head> <body> <table> <tr> <th> <input type="checkbox" id="checkAll" />全选/全不选 </th> <th>地名</th> <th>标志建筑</th> <th>小吃</th> </tr> <tr> <td> <input type="checkbox" class="check" /> </td> <td>北京</td> <td>天安门</td> <td>烤鸭</td> </tr> <tr> <td> <input type="checkbox" class="check" /> </td> <td>广州</td> <td>广州塔</td> <td>早茶</td> </tr> <tr> <td> <input type="checkbox" class="check" /> </td> <td>重庆</td> <td>解放碑</td> <td>火锅</td> </tr> </table> <script> // 分析 当checkall选中的时候所有的小盒子check都要选中 // 而所有check选中之后 大盒子才选中 let checkall = document.getElementById('checkAll'); let checks = document.querySelectorAll('.check'); checkall.onclick = function () { checks.forEach(function (check) { // console.log(1); check.checked = checkall.checked; }) }; checks.forEach(function (check) { // 假设所有的check都选中了 check.onclick = function () { let z = true; checks.forEach(function (check) { if (check.checked == false) { z = false; }; }); checkall.checked = z; } }) </script> </body> </html>