使用js实现多选框的全选、反选、以及子多选框影响全选框的勾选

使用js实现多选框的全选、反选、以及子多选框影响全选框的勾选

废话少说,直接上代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/jquery-3.3.1.js"></script>
	</head>
	<script>
		$(function(){
			var cheAll = document.getElementById("checkAll");
			var cheI = document.getElementById('checkI');
			var cheHobby = document.getElementsByClassName("hobby");
			var hobL = $("input[type='checkbox'][class='hobby']").length;
			//实现全选,取消全选
			cheAll.onchange = function(){
				for (var i = 0; i < cheHobby.length; i++) {
					cheHobby[i].checked = cheAll.checked;
					}
			}
			//反选
			cheI.onclick = function(){
				for(let j = 0;j<cheHobby.length;j++){
					cheHobby[j].checked = !cheHobby[j].checked;
				}
			}
			//遍历每个子选择框,为其添加change事件
			for(var i =0;i<cheHobby.length;i++){
				cheHobby[i].onchange = function(){
					var hobCl = $("input[type='checkbox'][class='hobby']:checked").length;
					if(!cheHobby.checked){//有cheHobby没有选中
						cheAll.checked = false;
					}
					if(hobL == hobCl){//当已被选中的checkbox长度与所有的checkbox长度相同时
						cheAll.checked = true;
					}
			  }
			}
		})
	</script>
	<body>
		<form action="test.htm" method="post">
			<input id="checkAll" type="checkbox" />全选
			<br />
			<input id="checkI" type="button" value="反选"/>
			<br />
			<input type="checkbox" class="hobby" />
			<input type="checkbox" class="hobby" />
			<input type="checkbox" class="hobby" />
			<input type="checkbox" class="hobby" />
			<input type="checkbox" class="hobby" />
		</form>
	</body>
</html>

运行效果图:

虽然有点丑,但是功能都实现了的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值