javaScript原生版购物车:全选、单选、全删、商品数量增减、计算总价、添加商品(代码)

article/2025/9/18 9:19:16

题目:

CSS代码如下:

<style>

        *{

            margin: 0px;

            padding: 0px;

        }

        .header,.content,.floot{

            width: 800px;

            margin:0px auto;

        }

        .header ul li,.content ul li{

            float: left;

            list-style: none;

            width: 100px;

            line-height: 100px;

            text-align: center;

        }

        /* 清除浮动 */

        .clear{

            clear:both

        }

        .li2{

            width: 200px;

        }

        button{

            padding: 2px 5px;

        }

    </style>

HTML代码如下:

<div class="header">

        <ul>

            <li><input type="checkbox" name="quan" οnclick="all2(this)">全选</li>

            <li class='li2'>商品图片</li> 

            <li>数量</li>

            <li>单价</li>

            <li>商品名称</li>

            <li>小计</li>

            <li>操作</li>

        </ul>

        <div class='clear'></div>

    </div>

    <div class='content'>

        <ul>

            <li><input type="checkbox" name="xuan" οnclick="radio1()"></li>

            <li class='li2'><img src="./img/1.jpg" width="100"></li> 

            <li>

                <button οnclick="jian(this)">-</button>

                <button>1</button>

                <button οnclick="add1(this)">+</button>

            </li>

            <li>¥<span>2200.00</span></li>

            <li>数码相机</li>

            <li>¥<span>2200.00</span></li>

            <li><button οnclick="del(this)">删除</button></li>

            <div class='clear'></div>

        </ul>

        

        <ul>

            <li><input type="checkbox" name="xuan" οnclick="radio1()"></li>

            <li class="li2"><img src="./img/2.jpg" width="100"></li> 

            <li>

                <button οnclick="jian(this)">-</button>

                <button>1</button>

                <button οnclick="add1(this)">+</button>

            </li>

            <li>¥<span>2300.00</span></li>

            <li>家用相机</li>

            <li>¥<span>2300.00</span></li>

            <li><button οnclick="del(this)">删除</button></li>

            <div class="clear"></div>

        </ul>

    </div>

    <div class='floot'>

        <button οnclick="delAll()">全删</button>

        <button οnclick="addGood()">添加商品</button>

        已选商品总计:¥<span>00.00</span>

        店铺合计:¥<span>00.00</span>

    </div>

JS代码如下:

<script>

        //获取操作对象

        var header=document.querySelector('.header')

        var content=document.querySelector('.content')

        var floot=document.querySelector(".floot")

        //获取所有的选中框对象

        // var xuans=content.querySelectorAll('[name="xuan"]')

        var xuans=document.getElementsByName("xuan")

        //全选

        function all2(btn){

            //遍历每一个选中框对象

            for(var i=0;i<xuans.length;i++){

                //判断全选框是否被选中

                if(btn.checked){

                    xuans[i].checked=true

                }else{

                    xuans[i].checked=false

                }

            }

            totalXuan()

        }

        //选中框

        function radio1(){

            //获取全选框对象

            var quan=header.querySelector('[name="quan"]')

            var a=0 //统计被选中的次数

            //遍历所有选中框对象

            for(var i=0;i<xuans.length;i++){

                //判断选中框是否被选中

                if(xuans[i].checked){

                    a++

                }

            }

            //判断被选中的次数是否等于选中框的长度

            if(a==xuans.length){

                quan.checked=true

            }else{

                quan.checked=false

            }

            totalXuan()

        }

        //加法

        function add1(btn){

            //获取数量

            var num=btn.previousElementSibling.innerHTML

            //修改数量

            num++

            //重新把数量赋值给指定位置

            btn.previousElementSibling.innerHTML=num

            //获取单价

            var price=btn.parentNode.nextElementSibling.lastElementChild.innerHTML

            //计算小计

            var sum=num*parseFloat(price)

            //重新给小计赋值

            // btn.parentNode.nextElementSibling.nextElementSibling.nextElementSibling.lastElementChild.innerHTML=sum

            btn.parentNode.parentNode.children[5].lastElementChild.innerHTML=sum

            totalHe()

            totalXuan()

        }

        //减法

        function jian(btn){

            //获取数量

            var num=btn.nextElementSibling.innerHTML

            if(num<=1){

                num=1

            }else{

                num--

            }

            //重新给数量赋值

            btn.nextElementSibling.innerHTML=num

             //获取单价

             var price=btn.parentNode.nextElementSibling.lastElementChild.innerHTML

            //计算小计

            var sum=num*parseFloat(price)

            //重新给小计赋值

            btn.parentNode.parentNode.children[5].lastElementChild.innerHTML=sum

            totalHe()

            totalXuan()

        }

        //删除

        function del(btn){

            btn.parentNode.parentNode.remove()

            totalHe()

            totalXuan()

        }

        //全删

        function delAll(){

            //遍历每一个选中框对象

            for(var i=xuans.length-1;i>=0;i--){

                //判断当前选中框是否被选中

                if(xuans[i].checked){

                    //删除当前商品

                    xuans[i].parentNode.parentNode.remove()

                }

            }

            totalHe()

            totalXuan()

        }

        m=3 //图片名称

        //添加商品

        function addGood(){

            //创建ul标签

            var newUl=document.createElement('ul')

            //给当前新节点添加内容

            newUl.innerHTML='<li><input type="checkbox" name="xuan" οnclick="radio1()"></li>'

            +'<li class="li2"><img src="./img/'+m+'.jpg" width="100"></li>'

            +'<li>'

                +'<button οnclick="jian(this)">-</button>'

                +' <button>1</button>'

                +' <button οnclick="add1(this)">+</button>'

                +'</li>'

                +'<li>¥<span>3300.00</span></li>'

                +'<li>索尼相机</li>'

                +'<li>¥<span>3300.00</span></li>'

                +'<li><button οnclick="del(this)">删除</button></li>'

                +'<div class="clear"></div>'

            //把当前新节点追加到content对象中

            content.appendChild(newUl)

            m++

            if(m>7){

                m=1

            }

            totalHe()

            totalXuan()

            radio1()

        }

        //店铺合计

        function totalHe(){

            //获取所有商品

            var uls=content.querySelectorAll("ul")

            var sum=0//合计

            //遍历每一个商品

            for(var i=0;i<uls.length;i++){

                //获取每个商品的小计

                var num=uls[i].children[5].lastElementChild.innerHTML

                sum+=parseFloat(num)

            }

            //给店铺合计赋值

            floot.lastElementChild.innerHTML=sum

        }

        totalHe()

        //已选商品总计

        function totalXuan(){

            var sum=0//商品总计

            //遍历每一个选中框对象

            for(var i=0;i<xuans.length;i++){

                //判断当前选中框是否被选中

                if(xuans[i].checked){

                    //获取当前被选中的商品小计

                    var num=xuans[i].parentNode.parentNode.children[5].lastElementChild.innerHTML

                    sum+=parseFloat(num)

                }

            }

            //给已选商品总计赋值

            floot.lastElementChild.previousElementSibling.innerHTML=sum

        }

        totalXuan()

    </script>

<style>*{margin: 0px;padding: 0px;}.header,.content,.floot{width: 800px;margin:0px auto;}.header ul li,.content ul li{float: left;list-style: none;width: 100px;line-height: 100px;text-align: center;}/* 清除浮动 */.clear{clear:both}.li2{width: 200px;}button{padding: 2px 5px;}</style>
<div class="header"><ul><li><input type="checkbox" name="quan" onclick="all2(this)">全选</li><li class='li2'>商品图片</li> <li>数量</li><li>单价</li><li>商品名称</li><li>小计</li><li>操作</li></ul><div class='clear'></div></div><div class='content'><ul><li><input type="checkbox" name="xuan" onclick="radio1()"></li><li class='li2'><img src="./img/1.jpg" width="100"></li> <li><button onclick="jian(this)">-</button><button>1</button><button onclick="add1(this)">+</button></li><li>¥<span>2200.00</span></li><li>数码相机</li><li>¥<span>2200.00</span></li><li><button onclick="del(this)">删除</button></li><div class='clear'></div></ul><ul><li><input type="checkbox" name="xuan" onclick="radio1()"></li><li class="li2"><img src="./img/2.jpg" width="100"></li> <li><button onclick="jian(this)">-</button><button>1</button><button onclick="add1(this)">+</button></li><li>¥<span>2300.00</span></li><li>家用相机</li><li>¥<span>2300.00</span></li><li><button onclick="del(this)">删除</button></li><div class="clear"></div></ul></div><div class='floot'><button onclick="delAll()">全删</button><button onclick="addGood()">添加商品</button>已选商品总计:¥<span>00.00</span>店铺合计:¥<span>00.00</span></div>
<script>//获取操作对象var header=document.querySelector('.header')var content=document.querySelector('.content')var floot=document.querySelector(".floot")//获取所有的选中框对象// var xuans=content.querySelectorAll('[name="xuan"]')var xuans=document.getElementsByName("xuan")//全选function all2(btn){//遍历每一个选中框对象for(var i=0;i<xuans.length;i++){//判断全选框是否被选中if(btn.checked){xuans[i].checked=true}else{xuans[i].checked=false}}totalXuan()}//选中框function radio1(){//获取全选框对象var quan=header.querySelector('[name="quan"]')var a=0 //统计被选中的次数//遍历所有选中框对象for(var i=0;i<xuans.length;i++){//判断选中框是否被选中if(xuans[i].checked){a++}}//判断被选中的次数是否等于选中框的长度if(a==xuans.length){quan.checked=true}else{quan.checked=false}totalXuan()}//加法function add1(btn){//获取数量var num=btn.previousElementSibling.innerHTML//修改数量num++//重新把数量赋值给指定位置btn.previousElementSibling.innerHTML=num//获取单价var price=btn.parentNode.nextElementSibling.lastElementChild.innerHTML//计算小计var sum=num*parseFloat(price)//重新给小计赋值// btn.parentNode.nextElementSibling.nextElementSibling.nextElementSibling.lastElementChild.innerHTML=sumbtn.parentNode.parentNode.children[5].lastElementChild.innerHTML=sumtotalHe()totalXuan()}//减法function jian(btn){//获取数量var num=btn.nextElementSibling.innerHTMLif(num<=1){num=1}else{num--}//重新给数量赋值btn.nextElementSibling.innerHTML=num//获取单价var price=btn.parentNode.nextElementSibling.lastElementChild.innerHTML//计算小计var sum=num*parseFloat(price)//重新给小计赋值btn.parentNode.parentNode.children[5].lastElementChild.innerHTML=sumtotalHe()totalXuan()}//删除function del(btn){btn.parentNode.parentNode.remove()totalHe()totalXuan()}//全删function delAll(){//遍历每一个选中框对象for(var i=xuans.length-1;i>=0;i--){//判断当前选中框是否被选中if(xuans[i].checked){//删除当前商品xuans[i].parentNode.parentNode.remove()}}totalHe()totalXuan()}m=3 //图片名称//添加商品function addGood(){//创建ul标签var newUl=document.createElement('ul')//给当前新节点添加内容newUl.innerHTML='<li><input type="checkbox" name="xuan" onclick="radio1()"></li>'+'<li class="li2"><img src="./img/'+m+'.jpg" width="100"></li>'+'<li>'+'<button onclick="jian(this)">-</button>'+' <button>1</button>'+' <button onclick="add1(this)">+</button>'+'</li>'+'<li>¥<span>3300.00</span></li>'+'<li>索尼相机</li>'+'<li>¥<span>3300.00</span></li>'+'<li><button onclick="del(this)">删除</button></li>'+'<div class="clear"></div>'//把当前新节点追加到content对象中content.appendChild(newUl)m++if(m>7){m=1}totalHe()totalXuan()radio1()}//店铺合计function totalHe(){//获取所有商品var uls=content.querySelectorAll("ul")var sum=0//合计//遍历每一个商品for(var i=0;i<uls.length;i++){//获取每个商品的小计var num=uls[i].children[5].lastElementChild.innerHTMLsum+=parseFloat(num)}//给店铺合计赋值floot.lastElementChild.innerHTML=sum}totalHe()//已选商品总计function totalXuan(){var sum=0//商品总计//遍历每一个选中框对象for(var i=0;i<xuans.length;i++){//判断当前选中框是否被选中if(xuans[i].checked){//获取当前被选中的商品小计var num=xuans[i].parentNode.parentNode.children[5].lastElementChild.innerHTMLsum+=parseFloat(num)}}//给已选商品总计赋值floot.lastElementChild.previousElementSibling.innerHTML=sum}totalXuan()</script>


http://chatgpt.dhexx.cn/article/TWAHAkOR.shtml

相关文章

商品管理的新增

实现的功能如下&#xff1a; 点击新增弹出新增模态框通过下拉框绑定商品类别和商品单位保存新增 主要代码&#xff1a; 以上就是我的分享&#xff0c;如果有更好的方法或不懂得地方欢迎在评论区教导和提问喔&#xff01;

案例:实现在购物车中添加商品和删除购物车中指定商品的功能

一、向购物车中添加商品 1.1.创建AddCartServlet public class AddCartServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}SuppressWarnings(&q…

14.商品添加功能

商品用例的bean层 添加商品的用例实现首先要有封装商品的bean&#xff0c;还要有封装商品种类的bean。 封装商品种类的bean package cn.bingou.domain;/*** 商品种类的bean* author 吹静静**/ public class ProdCategory {private int id;private String cname;public ProdCate…

二十三、商城 - 商品录入-新增商品(11)

目录 &#x1f33b;&#x1f33b; 一、商品录入【选择商品分类】1.1 需求分析1.2 准备工作1.3 代码实现1.3.1 一级分类下拉选择框1.3.2 二级分类下拉选择框1.3.3 三级分类下拉选择框1.3.4 读取模板ID 二、商品录入【品牌选择】2.1 需求分析2.2 代码实现 三、商品录入【扩展属性…

java添加功能_商品添加功能的实现

返回的结果&#xff1a; package com.taotao.common.utils; import java.util.List; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; /** * 淘淘商城自定义响应结构 */ public class TaotaoResult { // 定义jackson对象…

把商品添加到购物车的方法

因为抢华为荣耀的缘故&#xff0c;研究了下京东添加商品到购物车的方法&#xff0c;具体步骤如下 一&#xff1a;打开商品页面&#xff0c;找到商品的id 例如这个商品的id就是1056970 二&#xff1a;把链接里面的http://gate.jd.com/InitCart.aspx?pid###&pcount1&pt…

php 商品模块添加商品属性,添加新商品

进入添加商品页后&#xff0c;如图1&#xff0c;2 添加新商品 图1 图2 促销价格前台表现 图3 图4 图5 附加价格前台表现 图6 添加新商品 图7 配件和关联商品前台表现形式 图8 图9 通用信息商品分类&#xff1a;商品分类是必填项&#xff0c;用于帮助客户找到需要的商品。如果您…

添加商品

添加商品 步骤分析: 1.在index.jsp添加一个超链接 跳转到add.jsp 2.add.jsp放入一个表单 3.表单提交到 AddProductServlet 封装数据 调用service完成保存操作 跳转到FindAllServlet (请求转发和重定向) 有表单使用的时候若使用请求转发会出现重复提交 方案1:重定向 …

十七、商品添加

&#xff08;1&#xff09;通过编程式导航跳转到商品添加页面 1. 在List.vue页面。点击添加商品&#xff0c;实现页面跳转 2. 创建商品添加组件Add.vue 3. 为Add组件添加路由 &#xff08;2&#xff09; 渲染添加页面的基本UI结构 使用到Alter警告和Steps 步骤条组件 1. 引入…

(三十)商品管理-添加商品(上传图片)

&#xff08;三十&#xff09;商品管理-添加商品(上传图片) 添加商品(上传图片)1.修改页面上添加连接/store/adminProduct?methodaddUI2.在addUI请求转发到 添加页面3.在表单页面上修改action : /store/addProductServlet提交方式: method"post"添加enctype属性: e…

【VUE项目实战】56、商品添加功能(六)-提交添加的商品

接上篇《55、商品添加功能&#xff08;五&#xff09;-商品内容模块》 上一篇我们完成了商品内容编辑模块的开发&#xff0c;也即是完成了商品所有的信息编辑&#xff0c;本篇我们就来开发提交商品所有信息到后台的功能。 一、要实现的效果 我们要实现点击“添加商品”的按钮…

淘淘商城第30讲——实现商品添加功能

经过上文的学习&#xff0c;我相信大家都应该知道了富文本编辑器的使用方法&#xff0c;我们能走到这步&#xff0c;实属不易&#xff0c;本文终于可以来实现商品添加这个功能了。 在item-add.jsp页面当中&#xff0c;当点击提交按钮后&#xff0c;会触发submitForm方法&#…

密码登录

利用idea实现密码的输入 首先我们要先新建一个页面用于输入账号密码 req.setCharacterEncoding("UTF-8");String LoginNamereq.getParameter("LoginName");String LoginPwdreq.getParameter("LoginPwd");String msg"请输入密码";priva…

SQL Server安全:登录和用户

SQL Server安全&#xff1a;登录和用户 前言 建议配合sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系一起看。 授予 Principal &#xff08;安全主体&#xff09;操作 Securable&#xff08;安全对象&#xff09; 的 Permission&#xff08;权限&…

springboot-security安全登录

一个简单的security安全登录示例 配置环境 添加pom依赖坐标 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version></parent><depe…

如何设计一个安全的登录接口?

Java技术栈 www.javastack.cn 关注阅读更多优质文章 作者&#xff1a;哒哒哒哒打代码链接&#xff1a;juejin.im/post/6859214952704999438 前言 大家学写程序时&#xff0c;第一行代码都是hello world。 但是当你开始学习WEB后台技术时&#xff0c;很多人的第一个功能就是写的…

[OS-Linux] CentOS 7.x 安全登录策略设置

简介 之前用用户名和密码登陆服务器 这样不安全 &#xff0c;用SSH公钥(public key)验证 这个办法能很好的解决 登陆服务器 和安全登陆服务器的特点&#xff1a; 方法 / 步骤 &#x1f510; 一: 证书生成 命令行页面生成 (推荐) 查看执行结果&#xff0c;这时候连续回车即可…

开启QQ登录保护仍被盗号——QQ安全机制全面分析

1、前言 周围总是有些同学QQ被盗号&#xff0c;攻击者盗取账号后会继续去欺骗列表里的好友&#xff0c;形成链式反应。危害比较大。 腾讯QQ安全中心提供了登录保护机制&#xff0c;如图&#xff1a; 这是腾讯为QQ添加第二层保护&#xff0c;在开启登录保护后&#xff0c;盗号者…

使用 PHP 和 MySQL 的安全登录系统

Secure Login System with PHP and MySQL 在本教程中&#xff0c;我将教您如何创建自己的安全 PHP 登录系统。登录表单是您网站的访问者可以用来登录您的网站以访问受限内容&#xff08;例如个人资料页面&#xff09;的表单。我们将利用 MySQL 从数据库中检索帐户数据。 高级…

使用腾讯企业邮箱为什么强烈建议启用安全登录?怎么启用?

腾讯企业邮箱开启安全登录&#xff0c;简单来说就是把企业邮箱账号和微信绑定。启用安全登录和关闭安全登录&#xff0c;主要是登录方式发生了变化。 登录方式&#xff1a; 登录启用前启用后网页端邮箱帐号密码登录/微信扫码登录仅支持微信扫码登录客户端邮箱帐号密码登录仅…