全选按钮

全选按钮的实现

全选按钮是最基础的对dom树操作的例子,在平时的网页游览过程中有不少这样的例子,比如淘宝京东商城的购物车内,
当我们点击全选按钮,购物车内的所有单品会被选中。
再次单击全选按钮时,购物车内所有的单品会被取消选中。
在全选状态下,任意一个单选按钮被取消时,全选按钮都将被取消选中。
在未全选的状态下,所有单选按钮都选中时,全选按钮选中。

思路:

可以总结为查找到可以操作的对象,给查找到的对象添加操作。通过DOM树找到两种按钮,绑定相应的响应函数。

具体实现:

这个功能中,可以操作全选按钮,单选按钮变动,也可以是操作单选按钮全选按钮变动,所以我们第一步要进行的是查找到两种按钮:

// 通过选择器查找到全选按钮
var chbAll = document.querySelector('table>thead th:first-child>input')
// 通过选择器查找到单选按钮的集合
var chbs = document.querySelectorAll('table>tbody td:first-child>input'); 

单击全选按钮时的情况,给全选按钮绑定单击事件

// 给chbAll绑定单击事件
chbAll.onclick = function(){
	// 遍历chbs
	for(var i = 0; i < chbs.length; i++){	
		// 将所有的chb设置为与chbAll相同
		chbs[i].checked = this.checked;
	}
}

单击单选按钮时的情况,给所有的单选按钮绑定单击事件

// 遍历chbs
for(var i = 0; i < chbs.length; i++){
	// 给chbs绑定单击事件
	chbs[i].onclick = function(){
		// 如果当前单选按钮的checken是false
		if(!this.checked){
			// 将chbAll属性设置为false
			chbAll.checked = false;
		}else{
			// 获得没选中的单选按钮集合
			var chkds = document.querySelectorAll('table>tbody td:first-child>input:not(:checked)');
			// 如果获取的数组的长度为0说明没有未选中的
			if(chkds.length === 0){
				chbAll.checked = true;
			}else{// 否则说明有未被选中的
				chbAll.checked = false;
			}
		}
	}
}

下面是html页面代码

<table border="1px" width="500px" cellspacing="0">
	<thead>
		<tr>
			<th><input type="checkbox"/>全选</th>
			<th>管理员ID</th>
			<th>姓名</th>
			<th>操作</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td><input type="checkbox" name="adminID"/></td>
			<td>1</td>
			<td>Tester</td>
			<td></td>
		</tr>
		<tr>
			<td><input type="checkbox" name="adminID"/></td>
			<td>2</td>
			<td>Manager</td>
			<td></td>
		</tr>
		<tr>
			<td><input type="checkbox" name="adminID"/></td>
			<td>3</td>
			<td>Analyst</td>
			<td></td>
		</tr>
		<tr>
			<td><input type="checkbox" name="adminID"/></td>
			<td>4</td>
			<td>Admin</td>
			<td></td>
		</tr>
	</tbody>
</table>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值