JS实现全选与全不选 发表于 2019-01-13 | 先来看效果图: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <style> * { padding: 0; margin: 0; } .wrap { width: 300px; margin: 100px auto 0; } table { border-collapse: collapse; border-spacing: 0; border: 1px solid #c0c0c0; width: 300px; } th, td { border: 1px solid #d0d0d0; color: #404060; padding: 10px; } th { background-color: #09c; font: bold 16px "微软雅黑"; color: #fff; } td { font: 14px "微软雅黑"; } tbody tr { background-color: #f0f0f0; } tbody tr:hover { cursor: pointer; background-color: #fafafa; } </style></head><body><div class="wrap"> <table> <thead> <tr> <th> <input type="checkbox" id="j_cbAll"/> </th> <th>菜名</th> <th>饭店</th> </tr> </thead> <tbody id="j_tb"> <tr> <td> <input type="checkbox"/> </td> <td>红烧肉</td> <td>章鱼饭馆</td> </tr> <tr> <td> <input type="checkbox"/> </td> <td>爆炒冰溜子</td> <td>章鱼饭馆</td> </tr> <tr> <td> <input type="checkbox"/> </td> <td>油炸榴莲</td> <td>章鱼饭馆</td> </tr> <tr> <td> <input type="checkbox"/> </td> <td>大肠刺身</td> <td>章鱼饭馆</td> </tr> </tbody> </table></div></body></html> JavaScript代码: 1234567891011121314151617181920212223242526272829303132333435<script> function my$(id){ return document.getElementById(id); } //获取全选的这个复选框 var ckAll = my$("j_cbAll"); //获取tbody中所有的小复选框 var cks = my$("j_tb").getElementsByTagName("input"); //点击全选的这个复选框,获取他当前的状态,然后设置tbody中所有复选框的状态 ckAll.onclick = function () { //console.log(this.checked); for (var i = 0; i < cks.length; i++) { cks[i].checked = this.checked; } }; //获取tbody中所有的复选框,分别注册点击事件 for(var i=0;i<cks.length;i++){ cks[i].onclick=function () { var flag=true;//默认都被选中了 //判断是否所有的复选框都选中 for(var j=0;j<cks.length;j++){ if(!cks[j].checked){ //没选中就进来了 flag=false; break; } } //全选的这个复选框的状态就是flag这个变量的值 ckAll.checked=flag; }; }</script>