实现效果:

全选按钮:点击全选按钮所有的小按钮都会被选中;点掉全选按钮,所有按钮取消选中;

小按钮:只有全部被选中,全选按钮才会被选中

思路分析:

1、全选和取消全选做法:让下面所有复选框的 checked属性(选中状态)跟随全选按钮即可

使用 this.checked 可以获得当前复选框的状态,如果是true就代表被选中,如果是false就代表没被选中。

注:<input>的 checked 属性是一个布尔属性,checked 属性规定在页面加载时应该被预先选定的<input> 元素。

inp[i].checked = this.checked; 使下面所有的复选框的checked属性值等同于 全选按钮的checked值,跟随全选按钮的状态。

this.checked 得到的是 true或是 false,如果是true,就把true赋值给所有下面的复选框的 checked属性。

想实现全选和取消全选,最核心的思路就在于:把全选按钮当前是否选中的状态,将这个状态赋给下面所有复选框

2、下面的复选框需要全部选中,上面全选按钮才是选中状态的做法:(下面复选框的小按钮有一个没被选中,那么全选按钮也是没被选中的状态)给下面的复选框绑定点击事件,每次点击都要循环查看下面复选框是否还有没被选中的,如果有一个没被选中的,上面全选就不选中。

3、可以设置一个变量来控制全选按钮是选中还是没选中。var flag=true;


代码:

 <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单全选+取消全选</title>
<style>
*{
margin:0;padding: 0;
}
table{
width:500px;
position:relative;
margin:100px auto;
border-collapse:collapse;
border:1px solid #d7d7d7;
}
thead tr{
background-color:#222;
font-weight: 600;
color:#e9e9e9;
}
tbody tr:hover{
background: #F5F5F5;
}
table tr{
text-align: center;
height:30px;
}
</style>
</head>
<body>
<table border=1>
<thead>
<tr>
<td><input type="checkbox" id='cekall'></td>
<td>商品</td>
<td>价钱</td>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" name="" id=""></td>
<td>iPhone 11</td>
<td>5999.0</td>
</tr>
<tr>
<td><input type="checkbox" name="" id=""></td>
<td>荣耀20</td>
<td>2299.0</td>
</tr>
<tr>
<td><input type="checkbox" name="" id=""></td>
<td>iPhone XR</td>
<td>4499.0</td>
</tr>
</tbody>
</table>
</body>
<script> // 1、全选和取消全选做法:让下面所有复选框的 checked属性(选中状态)跟随全选按钮即可
// 获取元素,获取全选按钮和下面小的复选框
var cekall = document.getElementById('cekall');
var inp = document.querySelector('tbody').getElementsByTagName('input');
// 注册事件
cekall.onclick = function(){
// this.checked 可以得到当前复选框的选中状态,如果是 true 就是选中,如果是 false 就是未选中
console.log(this.checked);
for(var i=0; i< inp.length; i++){
inp[i].checked = this.checked;
}
}
// 2、下面的复选框要全部选中,上面的全选按钮才能够全部选中,给下面的所有复选框绑定事件,每次点击,都要循环查看下面下面所有的复选框是否有没选中的,如果有没选中的复选框,那么上面的全选按钮就不选中。
for(var i = 0; i<inp.length; i++){
inp[i].onclick = function(){
// 设置一个变量来控制按钮是否全部选中
var flag = true;
// 每次点击下面的复选框都要检查下面的四个小按钮是否被全部选中。
for(var i =0; i<inp.length; i++){
if(!inp[i].checked){
flag = false;
}
}
cekall.checked = flag;
}
}
</script>
</body>
</html>

实现效果:

点击全选按钮

最新文章

  1. 神经网络之Hebb学习规则
  2. console对象
  3. AngularJS in Action读书笔记3——走近Services
  4. Unity3D 角色(物体) 移动方法 合集
  5. sqlserver 修改替换text,ntext类型字段的两种方案
  6. Expecting &quot;jsp:param&quot; standard action with &quot;name&quot; and &quot;value&quot; attributes错误
  7. zsh配置文件
  8. 源自梦想 自定义ViewGroup的整理_1
  9. CentOS7 安装98五笔输入法
  10. 简洁判断一个byte中有多少位为1的bit?
  11. 格而知之9:一些关于GCD的笔记
  12. redis数据类型:lists
  13. NOIP2012junior—P1—质因数分解
  14. dfs练习
  15. 优先队列运用 TOJ 4123 Job Scheduling
  16. Comet OJ Contest #2
  17. javascript高级程序设计第3版——第10章 DOM
  18. bat如何提取文本指定行的内容
  19. Java集合中List,Set以及Map等集合体系详解(史上最全)
  20. 18,EasyNetQ-使用替代DI容器

热门文章

  1. 【Linux开发】Linux模块机制浅析
  2. git与码云关联教程
  3. VBnet窗口获取键盘输入
  4. BUUOJ reverse SimpleRev (爆破)
  5. redis缓存穿透00
  6. PHP,mysql,nginxunx中安装
  7. C数据结构排序算法——希尔排序法用法总结(转http://www.cnblogs.com/skywang12345/p/3597597.html)
  8. Python爬虫 Selenium与PhantomJS
  9. int 问号的使用
  10. string 驻留机制