HTML+CSS+JavaScript:全选与反选案例

news2024/11/16 19:27:19

一、需求

1、单击全选按钮,下面三个复选框自动选中,再次单击全选按钮,下面三个复选框自动取消选中

2、当下面三个复选框全都选中时,全选按钮自动选中,下面三个复选框至少有一个未选中,全选按钮自动取消选中

 二、代码素材

以下是缺失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>
       
    </script>
</body>

</html>

三、算法思路

1、获取相关元素

2、为全选框绑定鼠标点击事件,当点击事件触发时,将下面三个复选框的状态设置为与全选框一致

3、利用事件委托为下面三个复选框绑定鼠标点击事件,当任意一个复选框触发点击事件时,判断下面三个复选框是否全为选中状态,若全选中,则将全选框设置为全选,否则不设置。

四、完整代码

<!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++)
                cks[i].checked = this.checked
        })

        //业务模块二:当下面三个复选框全都选中时,全选按钮自动选中,下面三个复选框至少有一个未选中,全选按钮自动取消选中
        //利用事件委托绑定事件
        const table=document.querySelector('table')
        table.addEventListener('click',e=>{
            if(e.target.tagName==='INPUT'){
                checkAll.checked = document.querySelectorAll('.ck:checked').length === cks.length
                //.ck:checked是CSS伪类选择器,可以获取复选框中checked为true的选择器
            }
        })
    </script>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/832036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安装RabbitMQ镜像

步骤1&#xff1a;拉取镜像 docker pull rabbitmq:management 步骤2&#xff1a;运行 docker run -d –-name rabbit -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSadmin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:mana…

OpenCV中图像变换

一、介绍 transform()&#xff1a;Transposes a matrix. perspectiveTransform()&#xff1a;Performs the perspective matrix transformation of vectors. warpAffine()&#xff1a;Applies an affine transformation to an image. warpPerspective()&#xff1a;Applies a p…

python中等号要空格吗,python中等号和双等号

这篇文章主要介绍了python中等号两边自动添加空格操作&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 学习python时&#xff0c;注释的时候有下划线&#xff0c;波浪线&#x…

react ant icon的简单使用

refer: 快速上手 - Ant Design 1.引入ant npm install antd --save 2.在页面引用&#xff1a; import { StarOutlined } from ant-design/icons; 如果想要引入多个icon&#xff0c;可以这样书写&#xff1a; import { UserOutlined, MailOutlined, PieChartOutlined } fr…

智慧~经典开源项目数字孪生智慧商场——开源工程及源码

深圳南山某商场的工程和源码免费赠送&#xff0c;助您打造智慧商场。立即获取&#xff0c;提升商场管理效能&#xff01; 项目介绍 凤凰商场作为南山地区的繁华商业中心&#xff0c;提供多样化的购物和娱乐体验。通过此项目&#xff0c;凤凰商场将迈向更智能的商业模式。 本项目…

【2023 华数杯全国大学生数学建模竞赛】 C题 母亲身心健康对婴儿成长的影响 Python代码实现

【2023 华数杯全国大学生数学建模竞赛】 C题 母亲身心健康对婴儿成长的影响 1 题目 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、压力等…

Stable Diffusion教程(8) - X/Y/Z 图表使用

1. 介绍 这项功能可以在 文生图/图生图 界面的左下角种 “脚本” 一栏内选择 “X/Y/Z 图表” 以启用。 它创建具有不同参数的图像网格。使用 X 类型和 Y 类型字段选择应由行和列共享的参数&#xff0c;并将这些参数以逗号分隔输入 X 值 / Y 值字段。支持整数、浮点数和范围。…

【辨析】投影到高维空间 VS 嵌入到高维空间

虽然"投影到高维空间"和"嵌入到高维空间"都涉及将数据映射到高维空间&#xff0c;但它们在深度学习和机器学习领域中有着不同的含义和应用。 投影到高维空间&#xff08;Project to High-Dimensional Space&#xff09;&#xff1a; 投影是指将低维空间中…

三种方式创建对象的几种方式及new实例化时做了什么?

创建对象的几种方式 利用对象字面量创建对象 const obj {}2.利用 new Object创建对象 const obj new Object()3.使用 构造函数实例化对象 function Fn(name) {this.name name} const obj new Fn(张三) console.log(obj.name); //张三为什么要用构造函数的形式&#xff1…

基于STM32F103C8T6的温湿度控制系统(从PCB制作到成品展示)

很久就想写一篇入门级的硬件项目流程介绍&#xff0c;最近终于有了机会&#xff0c;接下来会从PCB设计到成品展示&#xff0c;一步一步地记录&#xff0c;如果对你有帮助&#xff0c;那便是最好。大白话记录我的整个开发流程&#xff0c;有点无聊&#xff0c;各位看官多多担待。…

POLARDB -- Ausitndatabases 历年的文章集合

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

模糊照片怎么修复清晰?教你轻松修复照片清晰度

照片记录着我们生活中的美好瞬间&#xff0c;然而&#xff0c;由于拍摄时手抖或对焦不准等原因&#xff0c;我们常常会遇到模糊的照片。你们通常都会怎么处理这些照片呢&#xff1f;是直接删掉吗&#xff1f;其实我们可以不用删掉&#xff0c;只需要使用一些图修复工具来修复这…

操作系统启动后网络还需要比较慢的时间才启动(差不多二分钟)

环境 linux 4.14.61 systemd version 247.3 问题 启动时发现网络其实很快就起来了&#xff0c;但是mqtt和docker启动的很慢&#xff0c;导致相关依赖启动很慢。 问题分析 实际通过systemctl list-units发现systemd-networkd-wait-online启动失败 而且从字面上看也有延时…

VB6中FSO具体应用详解

文前申明:原文为通用版实例代码,本菜鸟在每例之后加入一个简单的实例(均验证通过),供有需要的朋友参考. 您正在看的VB教程是:VB入门基础认识VB的文件系统对象FSO。 在 VB 编程中经常需要和文件系统打交道&#xff0c;比如获取硬盘的剩余空间、判断文件夹或文件是否存在等。在…

【JDK 11】【JDK 8】项目 jdk 版本升级,修改方案与实践

前言 工作中&#xff0c;难免会遇到升级版本的事情。这次由于两个系统中&#xff0c;系统 A 是用的 JDK8 版本&#xff0c;系统 B 是用 JDK11 版本&#xff1b;要求同步 JDK 版本&#xff0c;也就是升级到11版本。那么接下来将进行介绍~ 问题与解决 1. .sh 脚本启动无法启动…

状态模式——对象状态及其转换

1、简介 1.1、概述 在软件系统中&#xff0c;有些对象也像水一样具有多种状态&#xff0c;这些状态在某些情况下能够相互转换&#xff0c;而且对象在不同的状态下也将具有不同的行为。为了更好地对这些具有多种状态的对象进行设计&#xff0c;可以使用一种被称为状态模式的设…

SAS-数据集SQL水平合并

一、SQL水平合并基本语法 sql的合并有两步&#xff0c;step1&#xff1a;进行笛卡尔乘积运算&#xff0c;第一个表的每一行合并第二个表的每一行&#xff0c;即表a有3行&#xff0c;表b有3行&#xff0c;则合并后3*39行。笛卡尔过程包含源数据的所有列&#xff0c;相同列名会合…

JavaScript的单元挑战

Steven想要建立一个非常简单的小费计算器&#xff0c;以便他去餐厅吃饭时使用。在他的国家&#xff0c;如果账单金额在50到300之间&#xff0c;通常会给15%的小费。如果金额不同&#xff0c;小费就是20%。 您的任务是根据账单金额计算小费。为此创建一个名为’tip’的变量。不允…

2023天猫休闲零食市场分析(天猫数据分析软件)

基于较大的人口基数以及人们对休闲零食的需求&#xff0c;我国的休闲零食市场始终保持着稳健的增长趋势&#xff0c;行业整体的规模也比较大。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;2023年1月份至4月份&#xff0c;天猫平台上休闲零食行业的销量为6亿&#xff…