实现效果:

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

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

思路分析:

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. Elasticsearch-布尔类型

    boolean类型用于存储文档中的true/false.例如:专辑类型中需要添加一个字段表示是否可以下载,如下 curl -XPUT 'localhost:9200/music/album/4' -d ...

  2. 2. zookeeper介绍及集群搭建

    ZooKeeper 概述 Zookeeper 是一个分布式协调服务的开源框架. 主要用来解决分布式集群中 应用系统的一致性问题,例如怎样避免同时操作同一数据造成脏读的问题. ZooKeeper 本质上 ...

  3. jsp文件

    新建的jsp文件比新建的html文件多了一行内容<%@ page contentType="text/html; charset=utf-8" %>,这样不会显示乱码 ...

  4. sqlserver安装和踩坑经历

    sqlserver安装和踩坑经历 下载 下载 安装 大致是按照这个来的 安装教程 出错 windows系统安装软件弹出"Windows installer service could not ...

  5. CodeForce20C

    这是一个裸的最短路的模板题,但是它需要输出路径. 用dijkstra的话首先敲一个最短路的板子,其次开一个数组p[]来记录路径,但是怎么存呢?我们需要记录每一个点的前驱,因为如果记录后边的话,一个点可 ...

  6. spark教程(四)-SparkContext 和 RDD 算子

    SparkContext SparkContext 是在 spark 库中定义的一个类,作为 spark 库的入口点: 它表示连接到 spark,在进行 spark 操作之前必须先创建一个 Spark ...

  7. LeetCode题解: LRU Cache 缓存设计

    LeetCode题解: LRU Cache 缓存设计 2014年12月10日 08:54:16 邴越 阅读数 1101更多 分类专栏: LeetCode   版权声明:本文为博主原创文章,遵循CC 4 ...

  8. 使用.NET Core创建Windows服务(一) - 使用官方推荐方式

    原文:使用.NET Core创建Windows服务(一) - 使用官方推荐方式 原文:Creating Windows Services In .NET Core – Part 1 – The &qu ...

  9. vue运行碰到的问题

    Expected indentation of 0 spaces but found 2 解决方案: 文件中加入"indent": ["off", 2]就可以了 ...

  10. Intel Coleto Creek SSL chipset

    Intel Coleto Creek SSL chipset name type interface speed model SR-IOV driver Intel SSL chipset Colet ...