JS实现购物车的全选和取消全选效果---使用checkbox复选框

JS实现购物车全选和取消效果—使用checkbox复选框

一、需求说明


1、全选按钮需求

​        选中全选按钮,下面的所有按钮都会被选中;

​        取消选中全选按钮,下面的所有按钮也会被取消选中。

2、除全选按钮之外的其他按钮需求

​        其他按钮全部被选中,全选按钮也跟着被选中;

​        其他按钮只要有一个没有被选中,全选按钮也不会被选中。


二、功能演示


在这里插入图片描述


三、核心代码


<script>
	// 1、获取我们所需的标签对象
	// 获取表示全选的input标签
	var inputAll = document.querySelector('[name="all"]');
	//获取其他所有的input标签,存储在一个伪数组中
	var inputOther = document.querySelectorAll('[name="other"]');

	// 2、给表示全选的input标签添加点击事件
	inputAll.addEventListener('click', function () {
		// 循环遍历伪数组中存储的其他的所有input标签对象
		inputOther.forEach(function (item) {
			// item中存储的是伪数组中的每一个 name="other" 的input标签
			// 将全选input标签的checked属性值赋值给其他的input标签
			item.checked = inputAll.checked;
		});
	});

	// 3、循环遍历伪数组, 给所有其他的input标签添加点击事件
	inputOther.forEach(function (item) {
		item.addEventListener('click', function () {
			// 定义一个变量存储原始值
			var res = true;
			// 循环遍历每一个其他input标签对象, 判断checked属性值 
			for (var i = 0; i < inputOther.length; i++) {
				// 如果其他的input标签里面有checked属性值是false的
				if (inputOther[i].checked === false) {
					// 给变量赋值false
					res = false;
					// 只要有一个其他input没有选中,全选input就不会选中 
					// 伪数组中之后的其他input也就不用循环判断了,使用break跳出当前整个循环
					break;
				}
			}
			// 循环结束,  res存储的true或者false, 就是全选input标签checked属性的属性值
			// 将res作为属性值赋值给全选input标签的checked属性
			inputAll.checked = res;
		})
	})
</script>

四、原理及步骤说明


一、全选按钮需求

1、需求说明

​      全选按钮选中                  其他按钮选中

​      全选按钮取消选中           其他按钮取消选中

2、原理

​      通过 input 标签的 checked 属性值(true / false)来实现。

​      如果表示全选的 input 标签的 checked 属性值为 true ,其他的 input 标签的checked 属性值也为 true

​      如果表示全选的 input 标签的 checked属性值为 false ,其他的 input 标签checked 属性值为也为 false

3、步骤

​     3 - 1 使用 querySelector 方法获取表示全选的 input 标签;

             使用 querySelectorAll 方法获取所有其他的 input 标签,将它们存储在一个伪数组中。

     3 - 2  给表示全选的 input 标签添加点击事件。

​     3 - 3  循环遍历伪数组中存储的其他的所有 input 标签对象,将全选 input标签的 checked 属性值赋值给其他 input标签的 checked 属性。



二、除全选按钮之外的其他按钮需求

1、需求说明

​      其他的所有按钮都选中              全选按钮选中

​      有一个其他按钮取消选中           全选按钮选中取消选中

2、原理

​      所有其他 input 标签的 checked 属性值都是 true ,全选 input 标签的 checked 属性值是 true

​      所有其他 input 标签的 checked 属性值有一个是 false , 全选 input 标签的 checked 属性值是 false

​      我们可以定义一个变量,根据变量储存的最终结果给全选 input 标签的 checked 属性值赋值 。

3、步骤

​      3 - 1  循环遍历所有其他的 input 标签,为它们绑定点击事件。

​      3 - 2   定义一个变量,赋值 true

​      3 - 3  循环遍历所有其他 input 标签,判断其他 input 标签的 checked 属性值是不是 false; 如果是 false , 给变量赋值 false , 使用 break 终止循环。

​      3 - 4  将变量储存的数值赋值给全选 input 标签的 checked 属性。

五、完整代码下载


          完整代码免费下载

在这里插入图片描述

JavaScript和HTML中,创建一个购物车复选框全选/单选功能可以通过以下几个步骤完成。这里是一个基本的示例: ```html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>购物车复选框</title> <style> .cart-checks { display: flex; gap: 10px; /* 控制复选框之间的间距 */ } .check-all { margin-right: 10px; } </style> </head> <body> <h2>购物车商品选择</h2> <div class="cart-checks"> <!-- 商品项,这里的数量可以动态添加 --> <label class="checkbox" for="item1"> <input type="checkbox" id="item1" value="商品1"> 商品1 </label> <label class="checkbox" for="item2"> <input type="checkbox" id="item2" value="商品2"> 商品2 </label> <!-- 更多商品... --> <button id="checkAll">全选</button> <button id="uncheckAll">全不选</button> </div> <script> // 获取所有复选框全选按钮 const checkboxes = document.querySelectorAll('input[type="checkbox"]'); const checkAllBtn = document.getElementById('checkAll'); const uncheckAllBtn = document.getElementById('uncheckAll'); // 全选按钮事件处理 checkAllBtn.addEventListener('click', function() { checkboxes.forEach(function(checkbox) { checkbox.checked = true; }); }); // 全不选按钮事件处理 uncheckAllBtn.addEventListener('click', function() { checkboxes.forEach(function(checkbox) { checkbox.checked = false; }); }); // 当复选框状态改变时,检查是否有被选中的 checkboxes.forEach(function(checkbox) { checkbox.addEventListener('change', function() { if (checkboxes.filter(checkbox => checkbox.checked).length === checkboxes.length) { checkAllBtn.textContent = '全选'; } else { checkAllBtn.textContent = '全不选'; } }); }); </script> </body> </html> ``` 这个示例展示了如何使用JavaScript控制复选框全选全不选操作,并且当任何一个复选框的状态变化时,会自动更新全选按钮的状态。你可以根据实际需求对商品列表和样式进行扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值