4_7.DOM--实现全选、反选功能

html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		#table{
			width: 30%;
			border-collapse: collapse;
			margin-bottom: 5px;
		}
		td,th{
			border: 3px double #aaa;
			
		}
	</style>
</head>
<body>
	<h1>Administrators-list</h1>
	<table id="table">
		<thead>
			<tr>
				<th><input type="checkbox">All</th>
				<th>Ad_id</th>
				<th>Name</th>
				<th>Operation</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td><input type="checkbox"></td>
				<td>1</td>
				<td>A</td>
				<td>revise&nbsp;delete</td>
			</tr>
			<tr>
				<td><input type="checkbox"></td>
				<td>2</td>
				<td>B</td>
				<td>revise&nbsp;delete</td>
			</tr>
			<tr>
				<td><input type="checkbox"></td>
				<td>3</td>
				<td>C</td>
				<td>revise&nbsp;delete</td>
			</tr>
			<tr>
				<td><input type="checkbox"></td>
				<td>4</td>
				<td>D</td>
				<td>revise&nbsp;delete</td>
			</tr>
		</tbody>
	</table>
	<button type="button" id="rev">反选</button>
	<button type="button" id="del">删除选定</button>

	<script src=./k.js></script>
</body>
</html>

js

//功能1:点击全选按钮,列表复选框全部选中
//1.构建DOMTree
//2.查找触发事件的元素
var allcheck=document.querySelectorAll("#table thead tr th input")[0];
var childchecks=document.querySelectorAll("#table tbody tr td input");
var rev=document.querySelector("#rev");//反选
var del=document.querySelector("#del");//删除选定
//3.绑定事件
allcheck.onclick=function(){
	//4.获取要修改的元素:列表的复选框,就是childchecks	
	//5.修改
		for(var i=0;i<childchecks.length;i++){
			childchecks[i].checked=this.checked
		}
}

//功能2:若列表复选框全部选中,全选按钮也会选中。
	for(var i=0;i<childchecks.length;i++){
		childchecks[i].onclick=function(){
			//如果是取消的,则全选按钮也是取消的
			if(!this.checked){
				allcheck.checked=false;
			}
			else{
				//如果不是取消的,则再次判断是否都是被选中的,怎么判断呢,for?麻烦。
				//可以查找tbody中是否有"未被选中的"。
				var uncheck=document.querySelector("#table tbody tr td:first-child>input:not(:checked)");
				//如果有,全选不做变化。如果没有,设置全选被选中
				uncheck==null?allcheck.checked=true:allcheck.checked=false;

			}
		}
	}

//功能3:反选
	rev.onclick=function(){
		for(var i=0;i<childchecks.length;i++){
			childchecks[i].checked=!childchecks[i].checked;
		}
		var uncheck=document.querySelector("#table tbody tr td:first-child>input:not(:checked)");
		uncheck==null?allcheck.checked=true:allcheck.checked=false;
	}

//功能4:删除选定的复选框
	del.onclick=function(){
	var uncheck=document.querySelectorAll("#table tbody tr td:first-child>input:checked");//如果把所有的列表复选框都循环,很麻烦。可以先筛选所有具有checked的复选框,然后循环把他false
	if(!null){
		for(var i=0;i<uncheck.length;i++){
			uncheck[i].checked=false;
		}	
	}
	if (allcheck.checked){//最后全选复选框在判断一下
		allcheck.checked=false;
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值