复选框选择示例【JavaScript】

news2024/11/19 9:24:37

这段代码实现的功能是一个简单的复选框示例,它可以进行全选、反选和取消选中操作。

实现功能:

1. 全选:当点击标签"全选"旁边的复选框时,该页面上所有具有"item"类的复选框都会被选中(或者取消选中,如果它们之前都被选中了)。

2. 反选:当点击"反选"按钮时,当前的复选框会反转它们的选中状态。如果一个选项被选中了,点击按钮后它就会被取消选中;如果一个选项未选中,点击按钮后它就会被选中。

3. 取消选中:当点击"取消选中"按钮时,所有具有"item"类的复选框都会被取消选中,并且"全选"复选框也会自动被取消选中,表示整个列表中没有任何选项被选中。

代码:

<!DOCTYPE html>
<html lang="zh">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>全选、反选、取消选中</title>
		<style>
			div {
				border: 1px solid #000;
				width: 260px;
				margin-top: 20px;
				margin-bottom: 20px;
			}
		</style>
	</head>
	<body>
		<h1>复选框选择示例</h1>
		<label>
			<input type="checkbox" id="selectAll"> 全选
		</label>
		<div>
			<label>
				<input type="checkbox" class="item"> 选项 1
			</label>
			<label>
				<input type="checkbox" class="item"> 选项 2
			</label>
			<label>
				<input type="checkbox" class="item"> 选项 3
			</label>
		</div>
		<button id="invertSelection">反选</button>
		<button id="clearSelection">取消选中</button>

		<script>
			document.addEventListener('DOMContentLoaded', function() {
				const selectAllCheckbox = document.getElementById('selectAll');
				const itemCheckboxes = document.querySelectorAll('.item');
				const invertButton = document.getElementById('invertSelection');
				const clearButton = document.getElementById('clearSelection');

				// 全选功能
				selectAllCheckbox.addEventListener('click', function() {
					itemCheckboxes.forEach(checkbox => {
						checkbox.checked = selectAllCheckbox.checked;
					});
				});

				// 反选功能
				// invertButton.addEventListener('click', function() {
				// 	itemCheckboxes.forEach(checkbox => {
				// 		checkbox.checked = !checkbox.checked;
				// 	});
				// 	selectAllCheckbox.checked = false; // 同时取消全选
				// });

				// 反选功能
				invertButton.addEventListener('click', function() {
					let allUnchecked = true; // 检查是否所有复选框未选中

					itemCheckboxes.forEach(checkbox => {
						if (checkbox.checked) {
							allUnchecked = false; // 只要有一个复选框选中,就不是全部未选中
						}
						checkbox.checked = !checkbox.checked; // 反选操作
					});

					// 如果全部未选中,则选中全选
					selectAllCheckbox.checked = allUnchecked;
				});

				// 取消选中功能
				clearButton.addEventListener('click', function() {
					itemCheckboxes.forEach(checkbox => {
						checkbox.checked = false;
					});
					selectAllCheckbox.checked = false; // 同时取消全选
				});
			});
		</script>
	</body>
</html>

部分代码解析:

				// 全选功能
				selectAllCheckbox.addEventListener('click', function() {
					itemCheckboxes.forEach(checkbox => {
						checkbox.checked = selectAllCheckbox.checked;
					});
				});

这段JavaScript代码是关于一个“全选”复选框(selectAllCheckbox)的功能。当用户点击这个“全选”复选框时,它会触发一个事件,这个事件会遍历一个复选框数组(itemCheckboxes),并将数组中每个复选框的选中状态checked设置为与“全选”复选框的选中状态相同。

下面是代码的详细解析:

selectAllCheckbox.addEventListener('click', function() {...});
  • 这行代码给selectAllCheckbox(代表“全选”复选框的元素)添加了一个点击事件监听器。当用户点击这个复选框时,会执行提供的函数。
itemCheckboxes.forEach(checkbox => {...});
  • 这行代码使用forEach方法来遍历itemCheckboxes数组。itemCheckboxes很可能是一个包含页面上其他复选框元素的数组。
checkbox.checked = selectAllCheckbox.checked;
  • forEach的回调函数内部,这行代码将每个checkbox(即itemCheckboxes数组中的每个元素)的checked属性设置为selectAllCheckboxchecked属性值。换句话说,它确保了当“全选”复选框被选中或取消选中时,数组中的所有其他复选框也会被相应地选中或取消选中。

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

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

相关文章

七种修复错误:由于找不到msvcr110.dll 无法继续执行的方法

当你在运行某些程序时遇到“找不到msvcr110.dll”的错误提示&#xff0c;这通常意味着你的系统缺少了Microsoft Visual C 2012 Redistributable包中的一个重要文件。这个DLL文件是Microsoft Visual C Redistributable的一部分&#xff0c;用于支持许多使用Visual C编写的软件和…

回答网友的一个SQL问题

网友问&#xff1a; CODE NAME 1 A 1 B 如何得到下面的值&#xff0c;该如何写SQL CODE NAME 1 AB 1 AB 俺的回答&#xff1a; declare t table(code varchar(50),name varchar(50)) insert into t(code,name) select 1,A union select…

【Pleiades卫星】

Pleiades卫星 Pleiades卫星是法国研制的高分辨率光学成像卫星&#xff0c;旨在满足民用和国防领域对高分辨率地球观测数据的需求。以下是对Pleiades卫星的详细介绍&#xff1a; 一、基本概况 名称&#xff1a;Pleiades&#xff0c;中文名称为昴宿星卫星。研制国家&#xff…

数电学习基础(逻辑门电路+)

1.逻辑门电路 1.1逻辑门电路的简介 1.1.1各种逻辑门电路的简介 基本概念 &#xff08;1&#xff09;实现基本逻辑运算和常用逻辑运算的电路称为逻辑门电路&#xff0c;简称门电路。逻辑门电路是组成各种数字电路的基本单元电路。将构成门电路的元器件制作一块半导体芯片上再…

Allegro视频去除走线的小方块

走线出现小方块图如下&#xff1a; 其实这种情况并不影响PCB生产和布线的联通性&#xff0c;只是多少会影响美观和性能&#xff0c;在Allegro视频中去除的方法比较简单&#xff0c;是由模块复用以后&#xff0c;没有打散模块引起的。只要我们将模块的打散即可。具体操作如下:…

stm32 gpio I/O模式以及iic访问

1&#xff0c;硬件补充连接原理图引脚 #define FLASH_BASE ((uint32_t)0x08000000) /*!< FLASH(up to 1 MB) base address in the alias region */ #define CCMDATARAM_BASE ((uint32_t)0x10000000) /*!< CCM(core coupled mem…

球体检测系统源码分享

球体检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

元素循环分析再添新成员:铜、钼、镍、钴、硒微量元素数据库注释

微量营养元素&#xff08;例如Fe、Cu、Mo、Ni等&#xff09;是光合作用、呼吸作用、生物大分子合成、氧化还原平衡、细胞生长和免疫系统功能等微生物驱动过程的重要调节因子。虽然生物体需要少量的微量营养元素&#xff0c;但缺乏微量营养元素会严重限制生物体的生长和生物过程…

快手IP归属地怎么设置别的地方

在当今数字化时代&#xff0c;社交媒体平台如快手已成为人们日常生活中不可或缺的一部分。快手通过显示用户的IP归属地&#xff0c;增加了信息的透明度和互动性。然而&#xff0c;有些用户可能出于个人需求或特定情境&#xff0c;希望将自己的IP归属地设置为别的地方。本文将深…

前端开发必须了解的css知识

文本过长省略显示 单行 .ellipsis {overflow: hidden;text-overflow: ellipsis;white-space: nowrap; }多行 方法一&#xff1a; .ellipsis {overflow: hidden;text-overflow: ellipsis;-webkit-line-clamp: 3;word-break: break-all; }方法二&#xff1a; .ellipsis {ove…

分布式锁总结1 - 为什么需要分布式锁?

目录 1. 最基本的业务逻辑是&#xff1a; 2. 高并发场景下常见的缓存问题 2.1问题一 缓存穿透 : 一直查询不存在的数据 解决方案 : 短暂缓存null结果 2.2 问题二 缓存雪崩 : 大量key同时过期大量请求直击数据库 解决方案 : 在原有的过期时间上加一个随机的值&#xff0c;…

国联安基金前置机用朝天椒USB Server实现了虚拟化

国联安基金近期上线了朝天椒USB Server产品&#xff0c;影响了虚拟化进程的物理前置机逐步退出了历史舞台&#xff0c;实现了虚拟化&#xff0c;通过USB服务器&#xff0c;虚拟机中也能网络识别各个前置机系统的认证U盾。 一、背景 国联安基金在金融业务运营过程中&#xff0c…

进度条QProgressBar

进度条控价&#xff0c;用来只是任务的完成情况 值 包括当前值、最大值、最小值 // 获取和设置当前值 int value() const; void setValue(int);// 获取和设置最大值 int maximum() const; void setMaximum(int);// 获取和设置最小值 int minimum() const; void setMinimum(i…

Datawhale X 南瓜书 task01学习笔记

机器学习三观 机器学习工程领先理论 what:什么是机器学习? 机器学习定义&#xff1a;研究关于“学习算法”(一类能从数据中学习出其背后潜在规律的算法)的一门学科PS:深度学习指的是&#xff1a;神经网络那一类学习算法&#xff0c;因此是机器学习的子集把深度学习单列出来…

Linux网络命令:用于请求和配置网络地址的命令dhclient详解

目录 一、概述 二、功能描述 三、基本使用 1. 命令格式 2. 常用选项 3. 获取帮助 ​编辑 4. 基本操作 四、工作原理 1. 发送DHCP请求 2. 接收DHCP响应 3. 请求IP地址 4. 确认IP地址 5. 配置网络接口 五、功能特点 六、配置文件 七、常用命令和示例 1、启动…

spring boot项目对接人大金仓

先确认一下依赖 第一 是否引入了mybatis-plus多数据源&#xff0c;如果引入了请将版本保持在3.5.0以上 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>${dynam…

自闭症寄宿学校陕西:提供综合发展的教育环境

星贝育园&#xff1a;自闭症儿童的综合发展摇篮 在自闭症儿童教育的广阔领域里&#xff0c;寄宿制学校以其独特的康复环境和全方位的支持体系&#xff0c;为这些特殊的孩子点亮了希望之灯。广州的星贝育园自闭症儿童寄宿制学校&#xff0c;正是这样一所充满爱心与专业的机构&a…

【软件测试】详解测试中常用的几种测试方法

目录 一、集成测试二、 系统测试三、验收测试四、回归测试 总结 一、集成测试 术语 集成测试是继组件测试之后的又一个层次。集成测试假定交给这个层次的测试对象已经经过了组件测试&#xff0c;并且任何组件内部的缺陷都已经尽可能地被纠正。 集成 开发人员、测试人员和专…

R包:ggspatial空间画图

ggplot2语法的空间图形画图 Spatial data plus the power of the ggplot2 framework means easier mapping. 加载R包 # install.packages("ggspatial")library(ggplot2) library(ggspatial) load_longlake_data()Using layer_spatial() and annotation_spatial() g…

香港品牌JEWELRIESHOP发起商标维权,尚未TRO,跨境卖家注意排查

案件基本情况&#xff1a;起诉时间&#xff1a;2024-9-6案件号&#xff1a;2024-cv-08146品牌&#xff1a;JEWELRIESHOP原告&#xff1a;Chung Ting Yu原告律所&#xff1a;Ford Banister LLC起诉地&#xff1a;伊利诺伊州北部法院涉案商标/版权&#xff1a;原告品牌简介&#…