用js写全选,单选复选框(多种方法)
第一种 用for循环
1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 8 <title>Document</title> 9 <style> 10 .qin { 11 display: flex; 12 flex-direction: column; 13 } 14 </style> 15 </head> 16 17 <body> 18 <div class="qin"> 19 <span><input type="checkbox" id="qi">全选</span> 20 <span><input type="checkbox" name="qinq">Es6技术应用</span> 21 <span><input type="checkbox" name="qinq">微信小程序</span> 22 <span><input type="checkbox" name="qinq">Vue.js框架</span> 23 <span><input type="checkbox" name="qinq">react框架</span> 24 <span><input type="checkbox" name="qinq">ElementUl</span> 25 <span><input type="checkbox" name="qinq">vant</span> 26 <span><input type="checkbox" name="qinq">Bootstrap</span> 27 </div> 28 <script> 29 let qa = document.getElementById("qi") 30 let zx = document.getElementsByClassName("qinq") 31 qa.onclick = function () { 32 for (let i = 0; i < zx.length; i++) { 33 zx[i].checked=this.checked 34 35 } 36 } 37 for(let j=0; j<zx.length;j++){ 38 zx[j].onclick=function(){ 39 let flag=true; 40 for(let k=0;k<zx.length;k++){ 41 if(zx[k].checked==false){ 42 flag=false 43 } 44 } 45 qa.checked=flag 46 } 47 } 48 49 </script> 50 </body> 51 52 </html>
第二种 用forEach方法
1 let qa = document.getElementById("qi") 2 let zx = document.getElementsByName("qinq") 3 qa.onclick = function(){ 4 zx.forEach(ele=>{ 5 ele.checked = this.checked 6 }) 7 } 8 zx.forEach(zxa=>{ 9 zxa.onclick=function(){ 10 let can = 0 11 zx.forEach(ele=>{ 12 if(ele.checked){can++} 13 }) 14 qa.checked=zx.length==can?true:false 15 } 16 }) 17
第三种 用some方法
<script> let qa = document.getElementById("qi") let zx = document.getElementsByName("qinq") qa.onclick = function(){ zx.forEach(ele=>{ ele.checked = this.checked }) } zx.forEach(zxa=>{ zxa.onclick=function(){ let can = 0 zx.forEach(ele=>{ let flag=[ele].some(function(item,index){ return item.checked }) qa.checked = flag }) } }) let arr= [12,21,12,15,12,21,31,54] function con(arr){ for(let i=0;i<arr.length;i++){ for(let j=i+1;j<arr.length;j++){ if(arr[i]==arr[j]){ arr.splice(j,1) j--; } } } return arr } console.log(con(arr)); </script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通