JS切换页码后复选框选中状态还在,切换每页显示的条数时也出现复选框一直勾选的状态
// 创建复选框全选效果 // 1.确定事件:onclick; function check() { //2.获得复选框的id let check = document.getElementById('check'); //3.获得check下面的name let checknames = document.getElementsByName('checkname'); //4.判断check有没有勾选 if (check.checked == true) { //5.遍历checknames数组 for (let i = 0; i < checknames.length; i++) { checknames[i].checked = true; } } //6.判断check有没有勾选 if (check.checked == false) { //7.遍历checknames数组 for (let i = 0; i < checknames.length; i++) { checknames[i].checked = false; } } for (let i = 0; i < checknames.length; i++) { checknames[i].onclick = function() { /* 设置flag控制按钮是否选中 */ let flag = true; for (let i = 0; i < checknames.length; i++) { /* 每次点击事件都循环检查复选框是否全被选中 */ if (!checknames[i].checked) { flag = false; /* 当检测出有没有选中的复选框时,不用继续判断直接退出*/ break; } } check.checked = flag; } } }
解决方法:在创建的渲染函数中获取复选框的的元素,将他的判断 改为false,即未选中
// 渲染函数 renders(); // 创建渲染函数 function renders() { let str = ""; for (let i = num * page; i < (num + 1) * page; i++) { if (data[i]) { str += `<tr> <td class="table-cell-fix-left"><input type="checkbox" name="checkname" class="td--column--1"></td> <td >${data[i].id}</td> <td>${data[i].name}</td> <td>${data[i].age}</td> <td>${data[i].address}</td> </tr>`; } } document.getElementById("tbody").innerHTML = str; document.getElementById('check').checked = false renderPage(); }