js纯操作dom版购物车(实现购物车功能)

代码:

<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>tr {display: block;border-bottom: 1px dotted #dcdcdc;}td {width: 100px;text-align: center;}img {width: 80px;height: 80px;}input {width: 30px;text-align: center;}.bottom {width: 640px;height: 80px;line-height: 80px;margin-top: 10px;border: 1px solid #dcdcdc;}.qjs {width: 80px;height: 50px;background-color: red;color: white;font-size: 16px;border: 0;margin-left: 15px;}.jq::after {content: "¥";}.xj::after {content: "¥";}.del {cursor: pointer;}.del:hover{color: red;}.alldel {padding-left: 16px;cursor: pointer;}.red {color: red;}.alldel:hover {color: red;}.qlc {cursor: pointer;}.qlc:hover {color: red;}.trtop{height: 40px;}.spzj{margin-left: 95px;}</style></head><body><table class="tabzong"><tr class="trtop"><td><input type="checkbox" class="allchecked" />全选</td><td>商品</td><td>单价</td><td>商品数量</td><td>小计</td><td>操作</td></tr><tr><td><input type="checkbox" class="dx" /></td><td><imgsrc="https://img.alicdn.com/i2/2204920870409/O1CN01mobmIm1EtMniYVU0J_!!2204920870409.jpg"alt=""/></td><td class="jq">5</td><td><button class="jian" disabled>-</button><input type="text" value="1" /><button class="jia">+</button></td><td class="xj">5</td><td class="del">删除</td></tr><tr><td><input type="checkbox" class="dx" /></td><td><imgsrc="https://imgservice.suning.cn/uimg1/b2c/image/gKRneKhFHGnB1oh0Imoxcg.jpg_800w_800h_4e"alt=""/></td><td class="jq">3</td><td><button class="jian" disabled>-</button><input type="text" value="1" /><button class="jia">+</button></td><td class="xj">3</td><td class="del">删除</td></tr><tr><td><input type="checkbox" class="dx" /></td><td><imgsrc="https://imgservice.suning.cn/uimg1/b2c/image/ZzNpZsy4U3v8WgTbKqfN3A.jpg_800w_800h_4e"alt=""/></td><td class="jq">10</td><td><button class="jian" disabled>-</button><input type="text" value="1" /><button class="jia">+</button></td><td class="xj">10</td><td class="del">删除</td></tr><tr><td><input type="checkbox" class="dx" /></td><td><imgsrc="https://img2.baidu.com/it/u=4280167200,1529131522&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1066"alt=""/></td><td class="jq">20</td><td><button class="jian" disabled>-</button><input type="text" value="1" /><button class="jia">+</button></td><td class="xj">20</td><td class="del">删除</td></tr></table><div class="bottom"><span style="margin-right: 30px" class="alldel">删除所选商品</span><span class="qlc">清理购物车</span><span class="spzj">已经选中<span class="red">0</span>件商品总价:<span class="red">0¥</span></span><button class="qjs">去结算</button></div></body><script>// 第二种方式let body = document.body;let qlc = document.querySelector(".qlc");qlc.onclick = function () {body.innerHTML = `<table class="tabzong"><tr><td><input type="checkbox" class="allchecked">全选</td><td>商品</td><td>单价</td><td>商品数量</td><td>小计</td><td>操作</td></tr><tr><td><input type="checkbox" class="dx"></td><td><img src="https://img.alicdn.com/i2/2204920870409/O1CN01mobmIm1EtMniYVU0J_!!2204920870409.jpg" alt=""></td><td class="jq">5</td><td><button class="jian" disabled>-</button><input type="text" value="1"><button class="jia">+</button></td><td class="xj">5</td><td class="del">删除</td></tr><tr><td><input type="checkbox" class="dx"></td><td><img src="https://imgservice.suning.cn/uimg1/b2c/image/gKRneKhFHGnB1oh0Imoxcg.jpg_800w_800h_4e" alt=""></td><td class="jq">3</td><td><button class="jian" disabled>-</button><input type="text" value="1"><button class="jia">+</button></td><td class="xj">3</td><td class="del">删除</td></tr><tr><td><input type="checkbox" class="dx"></td><td><img src="https://imgservice.suning.cn/uimg1/b2c/image/ZzNpZsy4U3v8WgTbKqfN3A.jpg_800w_800h_4e" alt=""></td><td class="jq">10</td><td><button class="jian" disabled>-</button><input type="text" value="1"><button class="jia">+</button></td><td class="xj">10</td><td class="del">删除</td></tr><tr><td><input type="checkbox" class="dx"></td><td><img src="https://img2.baidu.com/it/u=4280167200,1529131522&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1066" alt=""></td><td class="jq">20</td><td><button class="jian" disabled>-</button><input type="text" value="1"><button class="jia">+</button></td><td class="xj">20</td><td class="del">删除</td></tr></table><div class="bottom"><span style="margin-right: 30px;" class="alldel">删除所选商品</span><span class="qlc">清理购物车</span><span style="margin-left: 110px;" class="spzj">已经选中<span class="red">0</span>件商品总价: <span class="red">0¥</span></span><button class="qjs">去结算</button></div>`;z();};z();function z() {let body = document.body;let qlc = document.querySelector(".qlc");qlc.onclick = function () {body.innerHTML = `<table class="tabzong"><tr><td><input type="checkbox" class="allchecked">全选</td><td>商品</td><td>单价</td><td>商品数量</td><td>小计</td><td>操作</td></tr><tr><td><input type="checkbox" class="dx"></td><td><img src="https://img.alicdn.com/i2/2204920870409/O1CN01mobmIm1EtMniYVU0J_!!2204920870409.jpg" alt=""></td><td class="jq">5</td><td><button class="jian" disabled>-</button><input type="text" value="1"><button class="jia">+</button></td><td class="xj">5</td><td class="del">删除</td></tr><tr><td><input type="checkbox" class="dx"></td><td><img src="https://imgservice.suning.cn/uimg1/b2c/image/gKRneKhFHGnB1oh0Imoxcg.jpg_800w_800h_4e" alt=""></td><td class="jq">3</td><td><button class="jian" disabled>-</button><input type="text" value="1"><button class="jia">+</button></td><td class="xj">3</td><td class="del">删除</td></tr><tr><td><input type="checkbox" class="dx"></td><td><img src="https://imgservice.suning.cn/uimg1/b2c/image/ZzNpZsy4U3v8WgTbKqfN3A.jpg_800w_800h_4e" alt=""></td><td class="jq">10</td><td><button class="jian" disabled>-</button><input type="text" value="1"><button class="jia">+</button></td><td class="xj">10</td><td class="del">删除</td></tr><tr><td><input type="checkbox" class="dx"></td><td><img src="https://img2.baidu.com/it/u=4280167200,1529131522&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1066" alt=""></td><td class="jq">20</td><td><button class="jian" disabled>-</button><input type="text" value="1"><button class="jia">+</button></td><td class="xj">20</td><td class="del">删除</td></tr></table><div class="bottom"><span style="margin-right: 30px;" class="alldel">删除所选商品</span><span class="qlc">清理购物车</span><span style="margin-left: 110px;" class="spzj">已经选中<span class="red">0</span>件商品总价: <span class="red">0¥</span></span><button class="qjs">去结算</button></div>`;z();};let dx = document.querySelectorAll(".dx");let allchecked = document.querySelector(".allchecked");// 小计let xj = document.querySelectorAll(".xj");// 商品总价let spzj = document.querySelector(".spzj");allchecked.onclick = function () {dx.forEach((item) => {item.checked = allchecked.checked;if (item.checked) {         item.parentNode.parentNode.style.background='#eeeeee'} else {item.parentNode.parentNode.style.background='white'}});if(allchecked.checked){x=dx.length}else{x=0}add();};// 总价let zongjia = 0;// 商品数量let x = 0;dx.forEach((item) => {item.onclick = function () {if (item.checked) {x++;zongjia +=+item.parentNode.nextElementSibling.nextElementSibling.nextElementSibling.nextElementSibling.innerText;item.parentNode.parentNode.style.background='#eeeeee'} else {x--;zongjia -=+item.parentNode.nextElementSibling.nextElementSibling.nextElementSibling.nextElementSibling.innerText;item.parentNode.parentNode.style.background='white'}spzj.innerHTML = `已经选中<span class="red">${x}</span>件商品总价: <span class="red">${zongjia}¥</span></span>`;//   单选控制全选let alltype = true;dx.forEach((dxitem) => {if (!dxitem.checked) {alltype = false;}});allchecked.checked = alltype;};});// 总价函数function add() {zongjia = 0;let dx = document.querySelectorAll(".dx");x=0dx.forEach((item) => {if (item.checked) {x++zongjia +=+item.parentNode.nextElementSibling.nextElementSibling.nextElementSibling.nextElementSibling.innerText;}});spzj.innerHTML = `已经选中<span class="red">${x}</span>件商品总价: <span class="red">${zongjia}¥</span></span>`;}// 清理购物车// 第一种方式// let qlc = document.querySelector('.qlc')// qlc.onclick=function(){//     location.reload();// }// 第二种方式let jian = document.querySelectorAll(".jian");let jia = document.querySelectorAll(".jia");jian.forEach((item) => {item.onclick = function () {if (--item.nextElementSibling.value > 1) {item.parentNode.nextElementSibling.innerText =item.nextElementSibling.value *item.parentNode.previousElementSibling.innerText;add();} else {item.parentNode.nextElementSibling.innerText =item.nextElementSibling.value *item.parentNode.previousElementSibling.innerText;item.disabled = true;add();}};});jia.forEach((item) => {item.onclick = function () {if (+item.previousElementSibling.value == 5) {alert("最多只能买5件");} else {item.previousElementSibling.value++;item.parentNode.nextElementSibling.innerText =item.previousElementSibling.value *item.parentNode.previousElementSibling.innerText;console.log(item.parentNode.nextElementSibling.innerText);item.previousElementSibling.previousElementSibling.disabled = false;add();}};});// 删除let del = document.querySelectorAll(".del");del.forEach((item) => {item.onclick = function () {item.parentNode.remove();add();};});// 删除所选let alldel = document.querySelector(".alldel");alldel.onclick = function () {dx.forEach((dxitem) => {if (dxitem.checked) {dxitem.parentNode.parentNode.remove();}});add();};}</script>
</html>

效果图:

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

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

相关文章

jenkins国内插件源

Jenkins是一个开源的持续集成和持续部署&#xff08;CI/CD&#xff09;工具, 可以大大减轻部署的工作量, 但是jenkins作为一个国外的软件, 在国内下载插件会很麻烦, 因此我们可以将其换为国内源 更换步骤 替换国内插件下载地址 以linux为例 首先, jenkins初始化完成之后不会…

如何制作一台自己想要的无人机?无人机改装调试技术详解

制作一台符合个人需求的无人机并对其进行改装调试&#xff0c;是一个既具挑战性又充满乐趣的过程。以下是从设计、选购材料、组装、调试到改装的详细步骤&#xff1a; 一、明确需求与设计 1. 明确用途与性能要求&#xff1a; 确定无人机的使用目的&#xff0c;如航拍、比赛、…

推荐一款功能强大的数据备份工具:Iperius Backup Full

Iperius Backup是一款非常灵活而且功能强大的数据备份工具&#xff0c;程序可以非常好的保护您的文件和数据的安全。支持DAT备份、LTO备份、NAS备份、磁带备份、RDX驱动器、USB备份、并且支持zip压缩和军事级别的AES 256位数据加密技术! 主要特色 云备份 Iperius可以自动地发…

.net 根据html的input type=“week“控件的值获取星期一和星期日的日期

初始化 "week" 控件值&#xff1a; //MVC部分 public ActionResult WeeklyList() {int weekNo new GregorianCalendar().GetWeekOfYear(System.DateTime.Now, System.Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Sunday);string DefaultWeek DateTime.No…

代码随想录算法训练营Day39 | 卡玛网-46.携带研究材料、416. 分割等和子集

目录 卡玛网-46.携带研究材料 416. 分割等和子集 卡玛网-46.携带研究材料 题目 卡玛网46. 携带研究材料&#xff08;第六期模拟笔试&#xff09; 题目描述&#xff1a; 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成…

论文速读:YOLO-G,用于跨域目标检测的改进YOLO(Plos One 2023)

原文标题&#xff1a;YOLO-G: Improved YOLO for cross-domain object detection 中文标题&#xff1a;YOLO-G&#xff1a;用于跨域目标检测的改进YOLO 论文地址&#xff1a; 百度网盘 请输入提取码 提取码&#xff1a;z8h7 代码地址&#xff1a; GitHub - airy975924806/yolo…

基于springboot企业微信SCRM管理系统源码带本地搭建教程

系统是前后端分离的架构&#xff0c;前端使用Vue2&#xff0c;后端使用SpringBoot2。 技术框架&#xff1a;SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 Mysql5.7 运行环境&#xff1a;jdk8 IntelliJ IDEA maven 宝塔面板 系统与功能介绍 基…

C++ —— 《模板进阶详解》,typename和class的用法,非类型模板参数,模板的特化,模板的分离编译

目录 1.非类型模板参数 2.模板特化 2.1 概念 2.2 函数模板特化 2.3 类模板特化 2.3.1 全特化 2.3.2 偏特化 3 模板分离编译 3.1 什么是分离编译 3.2 模板的分离编译 4.模板总结 在讲解模板进阶之前&#xff0c;我想先简单单独聊聊class和typename的用法 我们在平时…

博弈论 C++

前置知识 若一个游戏满足&#xff1a; 由两名玩家交替行动在游戏进行的任意时刻&#xff0c;可以执行的合法行动与轮到哪位玩家无关不能行动的玩家判负 则称该游戏为一个公平组合游戏。 尼姆游戏&#xff08;NIM&#xff09;属于公平组合游戏&#xff0c;但常见的棋类游戏&…

ASP.NET Core开发Chatbot API

本文介绍基于ASP.NET Core的Chatbot Restful API开发&#xff0c;通过调用大语言模型的SDK&#xff0c;完成一个简单的示例。并且通过容器化进行部署. 安装 首先需要安装.NET环境&#xff0c;笔者在Ubuntu 22.04通过二进制包进行安装&#xff0c;Windows和Mac下都有installer…

终止,半成收入来自海外,收入可持续性被质疑

芬尼科技终止原因如下&#xff1a;芬尼科技4年期间经历了两次IPO失败&#xff0c;公司半成收入来自海外&#xff0c;然而公司泳池收入面临欧洲地区冲突冲击及德国新节能措施影响。交易所质疑其收入是否具有可持续性。 作者&#xff1a;Eric 来源&#xff1a;IPO魔女 9月25日&a…

使用HIP和OpenMP卸载的Jacobi求解器

Jacobi Solver with HIP and OpenMP offloading — ROCm Blogs (amd.com) 作者&#xff1a;Asitav Mishra, Rajat Arora, Justin Chang 发布日期&#xff1a;2023年9月15日 Jacobi方法作为求解偏微分方程&#xff08;PDE&#xff09;的基本迭代线性求解器在高性能计算&#xff…

Webserver(2)GCC

目录 安装GCCVScode远程连接到虚拟机编写代码gcc编译过程gcc与g的区别Xftp连接虚拟机上传文件 安装GCC sudo apt install gcc g查看版本是7.5 touch test.c创建代码 但是在虚拟机中写代码很不方便 VScode远程连接到虚拟机编写代码 gcc test.c -o app在虚拟机中用gcc编译的…

AtCoder ABC376A-D题解

个人觉得 ABC 变得越来越难了/kk/kk/kk 比赛链接:ABC376 Problem A: Code #include <bits/stdc.h> using namespace std; int main(){int N,C;cin>>N>>C;for(int i1;i<N;i)cin>>T[i];int ans0,pre-1e5;for(int i1;i<N;i){if(T[i]-pre>C){…

APP专项测试-冷启动-流量-电量-内存

1、响应时间 1.1怎么获取冷启动时间&#xff08;热启动&#xff0c;就是后台不关后台再次打开&#xff09; 方法一 1.2怎么获取包名 与 启动页 方法三soloPi&#xff1a;启动时间(用户角度出发&#xff0c;页面差异进行计算时间)&#xff1a; 然后默认配置。点击开始录制 1开…

未来汽车驾驶还会有趣吗?车辆动力学系统简史

未来汽车驾驶还会有趣吗&#xff1f;车辆动力学系统简史 本篇文章来源&#xff1a;Schmidt, F., Knig, L. (2020). Will driving still be fun in the future? Vehicle dynamics systems through the ages. In: Pfeffer, P. (eds) 10th International Munich Chassis Symposiu…

高边坡稳定安全监测预警系统解决方案

一、项目背景 高边坡的滑坡和崩塌是一种常见的自然地质灾害&#xff0c;一但发生而没有提前预告将给人民的生命财产和社会危害产生严重影响。对高边坡可能产生的灾害提前预警、必将有利于决策者采取应对措施、减少和降低灾害造成的损失。现有的高边坡监测技术有人工巡查和利用测…

python3的基本数据类型:字符串的其他操作

一. 简介 前面文章学习了 python3 中字符串的创建&#xff0c;连接与转化。文章如下&#xff1a; 本文继续来学习 python3 中字符串的其他操作。 二. python3 的基本数据类型&#xff1a;字符串的其他操作 1. 字符转义 python3 中使用反斜杠 \ 转义特殊字符&#xff0c;它…

Docker 搭建mysql

拉取mysql镜像 docker pull mysql # 拉取镜像 [rooteason ~]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql 72a69066d2fe: Pull complete 93619dbc5b36: Pull complete 99da31dd6142: Pull complete 626033c43d70: Pull complete 37d…

JavaEE----多线程(二)

文章目录 1.进程的状态2.线程的安全引入3.线程安全的问题产生原因4.synchronized关键字的引入4.1修饰代码块4.2修饰实例方法4.3修饰静态方法4.4对象头介绍4.5死锁-可重入的特性 5.关于死锁的分析总结5.1死锁的分析5.2死锁成因的必要条件5.3死锁的解决方案 1.进程的状态 public…