js html css实现复选框全选与反选

下面我将分以下几个方面来讲解如何使用 HTML、CSS 和 JavaScript 实现复选框的全选与反选功能:

HTML 结构

首先需要在 HTML 中设置一些结构,使用 <input> 标签创建一个父复选框和一些子复选框。比如下面是一个简单的实现:

<input type="checkbox" id="parentBox" onchange="checkAll()" >全选

<input type="checkbox" id="childBox1" class="childBox">选项1
<input type="checkbox" id="childBox2" class="childBox">选项2
<input type="checkbox" id="childBox3" class="childBox">选项3

以上代码中,我们创建了一个 id 为 parentBox 的父复选框和三个 class 为 childBox 的子复选框。其中,父复选框的 onchange 事件绑定了名为 checkAll() 的函数。子复选框则可以通过 class 选择器选择,便于后续的操作。

JavaScript 实现全选和反选功能

在 JavaScript 中,我们可以通过获取父复选框的 checked 状态并将其赋值给所有子复选框,实现全选的功能。代码如下:

function checkAll() {
  var parentBox = document.getElementById("parentBox");
  var childBoxs = document.getElementsByClassName("childBox");
  for(var i = 0; i < childBoxs.length; i++) {
    childBoxs[i].checked = parentBox.checked;
  }
}

以上代码中,我们首先获取名为 parentBox 的元素和所有类名为 childBox 的元素。接着,我们通过 for 循环将父复选框的 checked 状态赋值给所有的子复选框。

反选功能则比较简单,只需要在每次点击一个子复选框后,重新计算全部子复选框的 checked 状态,并将结果赋给父复选框即可。代码如下:

function checkSingle () {
  var parentBox = document.getElementById("parentBox");
  var childBoxs = document.getElementsByClassName("childBox");
  var count = 0;
  for(var i = 0; i < childBoxs.length; i++) {
    if(childBoxs[i].checked === true) {
      count++;
    }
  }
  if(count === childBoxs.length) {
    parentBox.checked = true;
  } else {
    parentBox.checked = false;
  }
}

以上代码中,通过一个名为 checkSingle() 的函数实现反选的功能。我们首先获取所有子复选框的元素。 接着我们在一个 for 循环中,检查当前所有的子复选框,判断它们的 checked 状态是否为 true。如果是,则将 count 加 1。最后,判断 parentBox 是否应该被选中,如果 count 与 childBoxs.length 相等,则 parentBox 被选中。

示例演示

接下来我们将通过两个示例来演示如何使用 HTML、CSS 和 JavaScript 实现复选框的全选与反选功能。

示例一:基本全选反选功能

<html>
  <head>
    <title>复选框全选反选</title>
    <style>
      label {margin-right: 15px;}
    </style>
  </head>

  <body>
    <label><input type="checkbox" id="parentBox" onchange="checkAll()">全选</label>
    <label><input type="checkbox" id="childBox1" class="childBox" onclick="checkSingle()">选项1</label>
    <label><input type="checkbox" id="childBox2" class="childBox" onclick="checkSingle()">选项2</label>
    <label><input type="checkbox" id="childBox3" class="childBox" onclick="checkSingle()">选项3</label>

    <script>
      function checkAll() {
        var parentBox = document.getElementById("parentBox");
        var childBoxs = document.getElementsByClassName("childBox");
        for(var i = 0; i < childBoxs.length; i++) {
          childBoxs[i].checked = parentBox.checked;
        }
      }

      function checkSingle () {
        var parentBox = document.getElementById("parentBox");
        var childBoxs = document.getElementsByClassName("childBox");
        var count = 0;
        for(var i = 0; i < childBoxs.length; i++) {
          if(childBoxs[i].checked === true) {
            count++;
          }
        }
        if(count === childBoxs.length) {
          parentBox.checked = true;
        } else {
          parentBox.checked = false;
        }
      }
    </script>
  </body>
</html>

以上代码实现了最基本的复选框全选和反选功能。当点击全选按钮后,子复选框全部被选中;当子复选框被点击后,全选按钮将根据当前子复选框的选中状态进行处理。

示例二:实现样式美化

接下来,我们将使用 CSS 样式实现更加美观的界面。

<html>
  <head>
    <title>复选框全选反选</title>
    <style>
      label {
        display: inline-block;
        margin-right: 15px;
        padding-left: 35px;
        position: relative;
      }
      label:before {
        content: "";
        display: inline-block;
        width: 26px;
        height: 26px;
        position: absolute;
        left: 0;
        bottom: 1px;
        background-color: #fff;
        border: 1px solid #c2c2c2;
        border-radius: 2px;
        box-shadow: 0 2px 3px -2px rgba(0,0,0,.5);
        transition: all .3s ease;
      }
      .childBox {
        position: absolute;
        opacity: 0;
        cursor: pointer;
        z-index: -1;
      }
      .childBox:checked + label:before {
        background-color: #4180db;
        border-color: #4180db;
      }
      .childBox:checked + label:before:before {
        content: '\2713';
        position: absolute;
        top: 3px;
        left: 6px;
        font-size: 25px;
        color: #fff;
        font-weight: bold;
      }
      #parentBox:checked + label:before:before {
        content: '\2713';
        position: absolute;
        top: 3px;
        left: 6px;
        font-size: 25px;
        color: #fff;
        font-weight: bold;
      }
    </style>
  </head>

  <body>
    <input type="checkbox" id="parentBox" class="childBox" onchange="checkAll()">
    <label for="parentBox">全选</label>

    <input type="checkbox" id="childBox1" class="childBox" onclick="checkSingle()">
    <label for="childBox1">选项1</label>

    <input type="checkbox" id="childBox2" class="childBox" onclick="checkSingle()">
    <label for="childBox2">选项2</label>

    <input type="checkbox" id="childBox3" class="childBox" onclick="checkSingle()">
    <label for="childBox3">选项3</label>

    <script>
      function checkAll() {
        var parentBox = document.getElementById("parentBox");
        var childBoxs = document.getElementsByClassName("childBox");
        for(var i = 0; i < childBoxs.length; i++) {
          childBoxs[i].checked = parentBox.checked;
        }
      }

      function checkSingle () {
        var parentBox = document.getElementById("parentBox");
        var childBoxs = document.getElementsByClassName("childBox");
        var count = 0;
        for(var i = 0; i < childBoxs.length; i++) {
          if(childBoxs[i].checked === true) {
            count++;
          }
        }
        if(count === childBoxs.length) {
          parentBox.checked = true;
        } else {
          parentBox.checked = false;
        }
      }
    </script>
  </body>
</html>

以上代码利用了 CSS 样式实现了更美观的界面样式效果,其中父复选框和子复选框的样式都进行了美化处理。同时,也可以带来更好的用户体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js html css实现复选框全选与反选 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • CSS中选择器的权重值的计算

    CSS中选择器的权重值是用来优化CSS的一个重要概念,当多个选择器对同一个元素设置不同的样式时,CSS会通过计算选择器的权重值来判断哪些样式具有更高的优先级。下面是CSS中选择器权重值计算的详细说明: 选择器的组成 首先,先了解一下选择器的组成。选择器由不同的部分组成,每个部分的优先级是不同的。这些部分按照优先级的高低依次为: 内联样式(优先级为1000) …

    css 2023年6月9日
    00
  • CSS3之transition实现下划线的示例代码

    下面是“CSS3之transition实现下划线的示例代码”的详细攻略: 一、什么是transition transition是CSS3中的一个属性,可以用来设置CSS的过渡效果。它可以在元素的属性发生变化时,平滑地过渡到新的状态。常见的应用包括鼠标悬停时,改变文字和背景色等。 二、transition实现下划线代码 下面是一个使用transition实现下…

    css 2023年6月13日
    00
  • 需要知道的CSS3动画技术

    需要知道的CSS3动画技术 1. 初识CSS3动画 CSS3动画是指使用CSS3技术实现的动画效果,包括:过渡(Transition)、变形(Transform)和关键帧动画(Animation)。这些动画技术都可以通过CSS的样式控制实现。 1.1 过渡(Transition) 过渡是指让元素在一组CSS属性的值之间平滑的过渡,让过渡看起来更加自然流畅。通…

    css 2023年6月10日
    00
  • 详解HTML常用的标签中行内元素和块级元素

    下面是详解HTML常用的标签中行内元素和块级元素的攻略: 行内元素和块级元素是什么 在HTML中,标签是以行内元素和块级元素进行分类的。这两种元素的区别在于它们的渲染方式和所占的空间大小。 行内元素 行内元素指的是在渲染时它们会在同一行内显示,并且不会主动换行。此外,行内元素只会占据恰好够用的宽度空间。常用的行内元素有a、span、img等。 块级元素 块级…

    css 2023年6月9日
    00
  • 怎么免费激活DA-HelpCreator 附激活教程+注册机

    关于怎样免费激活DA-HelpCreator的过程,这里提供一份完整的攻略,步骤如下: 步骤一:下载DA-HelpCreator 首先,前往DA-HelpCreator官方网站 (https://www.da-helpcreator.com/index.html) 下载最新版的DA-HelpCreator软件(请注意,此软件是一款商业软件,但是提供30天的免…

    css 2023年6月10日
    00
  • 使用HTML5+Boostrap打造简单的音乐播放器

    使用HTML5+Bootstrap打造简单的音乐播放器 1. 介绍 在本攻略中,我们将使用HTML5和Bootstrap来打造一个简单的音乐播放器。这个播放器包含基本的控制按钮,能够播放/暂停和快进/后退歌曲。 2. 步骤 2.1 准备工作 在开始之前,我们需要准备好以下的东西:- 一个文本编辑器,例如Sublime或Visual Studio Code。-…

    css 2023年6月11日
    00
  • 利用CSS3 动画 绘画 圆形动态时钟

    关于“利用CSS3动画绘画圆形动态时钟”这个主题,我可以提供以下完整攻略: 1. 初步准备 在编写CSS3动画之前,请确保已经了解了以下基础知识: HTML基础知识 基础CSS的基础知识和语法 CSS3的动画和变换知识 在你开始编写CSS3动画之前,请先创建一个新的HTML文件,然后添加必要的HTML标记(例如文件头信息、HTML标签和空等待填充的容器等)。…

    css 2023年6月10日
    00
  • PS熟练度的10个段位的区分 看看你的PS熟练度是几段?

    PS熟练度的10个段位区分攻略 Photoshop是一款非常强大的图像处理软件,吸引了越来越多的用户使用。但不同的用户熟练度不同,在PS初学者和高手之间存在很多分别,下面是PS熟练度的10个段位的区分攻略。 1. PS入门者(刚接触PS): 这个阶段的用户刚接触Photoshop,对工具和面板的了解很少,唯一会的可能就是打开和保存文件。 示例1:小张刚打开P…

    css 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部