当前位置: 首页 > article >正文

JS全选反选案例

我们在进行网页制作的时候,通常会用到复选框,而复选框外面往往有一个大的勾选框来,控制里面的框是否全部选择,而里面的小复选框同时也是在控制着外面大的选择框,当里面全选的时候,外面的也会勾选上,今天我们了了解如何实现,这个功能:

代码展示如下:

<!DOCTYPE html>

<html>

<head lang="en">
  <meta charset="UTF-8">
  <title></title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    table {
      border-collapse: collapse;
      border-spacing: 0;
      border: 1px solid #c0c0c0;
      width: 500px;
      margin: 100px auto;
      text-align: center;
    }

    th {
      background-color: #09c;
      font: bold 16px "微软雅黑";
      color: #fff;
      height: 24px;
    }

    td {
      border: 1px solid #d0d0d0;
      color: #404060;
      padding: 10px;
    }

    .allCheck {
      width: 80px;
    }
  </style>
</head>

<body>
  <table>
    <tr>
      <th class="allCheck">
        <input type="checkbox" name="" id="checkAll"> <span class="all">全选</span>
      </th>
      <th>商品</th>
      <th>商家</th>
      <th>价格</th>
    </tr>
    <tr>
      <td>
        <input type="checkbox" name="check" class="ck">
      </td>
      <td>小米手机</td>
      <td>小米</td>
      <td>¥1999</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox" name="check" class="ck">
      </td>
      <td>小米净水器</td>
      <td>小米</td>
      <td>¥4999</td>
    </tr>
    <tr>
      <td>
        <input type="checkbox" name="check" class="ck">
      </td>
      <td>小米电视</td>
      <td>小米</td>
      <td>¥5999</td>
    </tr>
  </table>
  <script>
    //获取大的复选框
    const checkAll = document.querySelector('#checkAll')
    //获取小的复选框
    const cks = document.querySelectorAll('.ck')
    checkAll.addEventListener('click',function() {
      //遍历小复选框
      for(let i = 0; i < cks.length; i++) {
        //让所有的小复选框同大复选框一同变化
        //下面这句的意思是让外面大的选择框有checked的时候里面的小复选框也同时加上这个属性
        cks[i].checked = checkAll.checked
      }
    })
    for(let i = 0; i < cks.length; i++) {
      cks[i].addEventListener('click',function() {
        //=后面返回的是false或true
        checkAll.checked = document.querySelectorAll('.ck:checked').length === cks.length
      })
    }
  </script>
</body>

</html>


http://www.kler.cn/news/309919.html

相关文章:

  • 海杂波分级方法
  • springboot项目中 前端浏览器访问时遇到跨域请求问题CORS怎么解决?has been blocked by CORS policy
  • 【UEFI基础】BIOS模块执行的优先级
  • 集成网口连接器国产化替代--RJ45内置网络变压器网口生产工厂在行动
  • HarmonyOS学习(十一)——安全管理
  • 说说synchronized的锁升级过程
  • 请求转发和重定向的区别
  • Eureka原理与实践:构建高效的微服务架构
  • 宠物空气净化器该怎么选?希喂、352、霍尼韦尔哪款对吸附浮毛有效
  • Python协程详解
  • uniapp中使用uni.$emit和uni.$on在vue和nvue页面之间传值但是无法赋值的问题
  • HarmonyOS 实现自定义启动页
  • 鸿蒙开发协调布局CollapsibleLayout
  • Unity3d 以鼠标位置点为中心缩放视角(正交模式下)
  • 待办: 杂七杂八——大杂烩.....懒得整理了,我自己凑合看
  • 新手学习Python第七天-新手笔记
  • 基于STM32C8T6的CubeMX:HAL库点亮LED
  • Datawhale X 李宏毅苹果书 AI夏令营 《深度学习详解》第十九章 ChatGPT
  • Python 入门教程(3)基础知识 | 3.6、标准输入与输出
  • c++----模板(进阶)
  • 什么是VHDX文件?
  • 国科云域名解析课堂:一个域名可以解析到多个IP地址吗?
  • 高校能耗管控方案如何做到节能减排
  • 【Python123题库】#绘制温度曲线 #XRD谱图绘制 #态密度曲线绘制
  • 3个WebSocket的.Net开源项目
  • 基于vue框架的宠物店管理系统的设计与实现4czn0(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • StackTrace在.Net中获取当前线程的堆栈跟踪信息
  • 【MySQL】MySQL连接池原理与简易网站数据流动是如何进行
  • mysql笔记7(单表查询)
  • 计算机毕业设计 健身房管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解