题目描述限制多选框的选中个数,用一个方法单独写出来,在文本框输入数字选中多选框的某个元素时,到了该限制的时候没有反应。题目来源及自己的思路来源:慕课网JavaScript的一道题目+我自己的一点想法。思路:先判断多选框是否选中,如果已经开始选中就调用限制多选框选中个数的方法,网上说要设置点击多选框触发方法,然后在该方法中将checked设置为false,但是文本框控制多选框不需要点击多选框,所有不能触发该方法,多选框用onclick方法将设置多选框的checked=false后,多选框元素还是被选中了,查了好多资料都没有解决。相关代码请选择你爱好:音乐登山游泳阅读打球跑步请输入您要选择爱好的序号,序号为1-6:functioncheckall(){//全选varhobby=document.getElementsByTagName("input");for(vari=0;i
2 回答
函数式编程
TA贡献1807条经验 获得超9个赞
在你原来的基础上改了一点点
functioncheckall(){//全选varhobby=document.getElementsByTagName("input");for(vari=0;iif(hobby[i].type=="checkbox"){ hobby[i].checked=true;}}}functionclearall(){//全不选varhobby=document.getElementsByName("hobby");for(vari=0;iif(hobby[i].checked==true){ hobby[i].checked=false;}}}functioncheckone(){//选一个varj=document.getElementById("wb").value;varhobby=document.getElementsByName('hobby');if(j<=0||j>6){alert("请输入正确的数字!");}elseif(autoCheck("hobby",3,'checkone')){hobby[j-1].checked=true;}}//输入时限制单个选中的最大个数functionautoCheck(name,limit,type){varhobby=document.getElementsByName(name);if(type=='checkone'){varnum=1;}else{varnum=0;}for(vari=0;iif(hobby[i].checked){ num++}}console.log(num)if(num<=limit){returntrue;}else{alert('超限了亲')returnfalse;}}//直接选择时限制单个选中的最大个数functionsigleCheck(){varhobby=document.getElementsByName('hobby');if(autoCheck("hobby",3)){for(vari=0;ihobby[i].onclick=function(e){ if(autoCheck("hobby",3,'sigleCheck')){e.target.checked=true;}else{e.target.checked=false;}}}}}sigleCheck()