实现效果:

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

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

思路分析:

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>

实现效果:

点击全选按钮

JS实现表单全选以及取消全选实例的更多相关文章

  1. js实现表单checkbox的单选,全选

    全选&单选 //<input type="checkbox" name="" class="quan" value=" ...

  2. JS对checkbox全选和取消全选

    需求:checkbox控制列表数据全选与取消全选择. 效果图: 1.html <body > <input type="button" name="in ...

  3. js全选与取消全选

    实现全选与取消全选的效果 要求1(将军影响士兵):点击全选按钮,下面的复选框全部选中,取消全选按钮,下面的复选框全部取消 思路:复选框是否被选中,取决于check属性,将全选按钮的check属性值赋值 ...

  4. js实现checkbox组 全选和取消全选

    做后台管理程序时,用到一个checkbox组的全选和取消全选的功能, 主要是逻辑上的坑,理清后大概是: 1.全选点击后,小弟1~4都要选上,点击取消,小弟们也要取消 2.只要有一个小弟取消时,全选要取 ...

  5. 使用AngularJS实现简单:全选和取消全选功能

    这里用到AngularJS四大特性之二----双向数据绑定 注意:没写一行DOM代码!这就是ng的优点,bootstrap.css为了布局,JS代码也只是简单创建ng模块和ng控制器 效果: < ...

  6. JS 更改表单的提交时间和Input file的样式

    JS转换时间 function renderTime(data) { var da = eval('new ' + data.replace('/', '', 'g').replace('/', '' ...

  7. bootstrap实现checkbox全选、取消全选

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!-- 最新版本的 ...

  8. jquery.form.js 让表单提交更优雅

    jquery.form.js 让表单提交更优雅.可以页面不刷新提交表单,比jQuery的ajax提交要功能强大. 1.引入 <script src="/src/jquery-1.9.1 ...

  9. Vue.js:表单

    ylbtech-Vue.js:表单 1.返回顶部 1. Vue.js 表单 这节我们为大家介绍 Vue.js 表单上的应用. 你可以用 v-model 指令在表单控件元素上创建双向数据绑定. v-mo ...

随机推荐

  1. JAVA师徒架构班 - 带徒模式

    (转: http://www.jeecg.org/forum.php?mod=viewthread&tid=2291&extra=page%3D1&page=1) 一个程序员技 ...

  2. PostgreSQL查询数据库中包含某种类型的表有哪些

    and c.relnamespace = n.oid and nspname = 'public' and a.atttypid = t.oid and typname = 'TEXT' and c. ...

  3. python之函数、面向对象

    学习python到了函数这一块进度有所放缓,主要还是想理解透彻,毕竟直觉告诉我函数是python是其中的关键,不管是模块.还是包.或者是库,都是建立在若干个函数定义上面. 章节后面就是关于面向对象编程 ...

  4. P3586 [POI2015]LOG

    传送门 对于询问,首先如果正数数量不到 $c$ 个显然无解 然后如果大于等于 $s$ 的数大于等于 $c$ 个,那么显然有解 否则,考虑贪心地取数,首先初始大于等于 $s$ 的哪些数我们每次取都可以取 ...

  5. Maximum path CodeForces - 762D

    大意: 3*n矩阵, 求从(1,1)->(3,n)路径最大点权和. 核心观察是每个点回头一定不会超过1, 这是因为只有三行, 若回头两格一定是$9$个位置全走, 显然可以找到一种只会头一格的方案 ...

  6. JavaSSM框架精选50道面试题

    JavaSSM框架精选50道面试题 2019年02月13日 19:04:43 EerhtSedah 阅读数 7760更多 分类专栏: 面试题   版权声明:本文为博主原创文章,遵循CC 4.0 BY- ...

  7. springboot(二十)-配置文件 bootstrap和application区别

    用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .pr ...

  8. javascript--获取一个页面各个标签的数量

    获取一个页面各个标签的数量 document.getElementsByTagName('*')--获取所有的标签. var obj = document.getElementsByTagName(' ...

  9. Spring Boot整合actuator实现监控管理

    Spring Boot使用actuator监控管理 1.在pom文件中导入相关的依赖 <dependency> <groupId>org.springframework.boo ...

  10. 织梦多个栏目arclist调用副栏目不显示的解决办法

    织梦arclist调用副栏目不显示,网上关于这个问题的解决办法有很多,其中一种是: 打开/include/taglib/arclist.lib.php,代码约位于295-296行(我目前用的DedeC ...