js原生、jQuery实现复选框checkbox全选/全不选,反选

js原生、jQuery实现复选框checkbox全选/全不选,反选

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
	<div>
		<b>原生js实现</b>
		<div>
			<input type="checkbox" name="check"/></div>
		<div>
			<input type="checkbox" name="check"/></div>
		<div>
			<input type="checkbox" name="check"/></div>
		<div>
			<input type="checkbox" name="check"/></div>
		<div>
			<input type="checkbox" id="check-all" onclick="checkAllOrNot()"/>全选
		</div>
		<div>
			<input type="button" id="upcheck" value="反选" onclick="upcheck()"/>
		</div>
	</div>
	<div>
		<b>jQuery实现</b>
		<div>
			<input type="checkbox" name="check2"/></div>
		<div>
			<input type="checkbox" name="check2"/></div>
		<div>
			<input type="checkbox" name="check2"/></div>
		<div>
			<input type="checkbox" name="check2"/></div>
		<div>
			<input type="checkbox" id="check-all2" />全选
		</div>
		<div>
			<input type="button" id="upcheck2" value="反选"/>
		</div>
	</div>
<script>
	//js原生代码实现
	//全选/全不选
    function checkAllOrNot(){
        var check=document.getElementsByName("check");
        for(var i=0;i<check.length;i++){
            check[i].checked=document.getElementById('check-all').checked;
        }
    }
	
	//反选
	function upcheck(){
		var check=document.getElementsByName("check");
		for(var i=0;i<check.length;i++){
			//好像直接取自身反值比判断来的更快
			check[i].checked=!check[i].checked;
			/*这个是加了判断的代码块
			 if(check[i].checked){
				check[i].checked=false;
			}
			else{
				check[i].checked=true;
			} */
		}
	}
</script>
<script src="lib/jquery-3.5.1.min.js"></script>
<script>
	//jq实现
	//全选/全不选
	$("#check-all2").click(function(){
		$("input[name='check2']:checkbox").prop("checked",this.checked);
	});
	//反选
	$("#upcheck2").click(function(){
		$("input[name='check2']:checkbox").each(function(){//不懂.each()方法自行百度,其实用for也行,但那算是原生js
			//这是用原生js实现代码,比较简洁
			this.checked=!this.checked;
			/* 这是用jq代码的实现
			$(this).prop("checked",!$(this).prop("checked")); */
			
			/* this和$(this)区别在于:
			首先this指向当前元素,
			而this仅能使用原生js属性例如上面的.checked属性,不能使用jq的属性.prop(),
			要使用jq属性就需要把this包装成jq元素即:$(this) */
			
		});
	});
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值