购物车动态修改购买条数和总计(上一篇代码的补充)

js实现购物车,原理简单,代码解释-->详细 大家在淘宝或者京东购物时,看到在选中全选按钮,或者其他商品选中,从而触发全选按钮是怎么实现的吗? 单商品的价格计算随着数量的增多减少而上升或者下降吗? 总价随着每个商品的价格相加或相减,而变化吗? 来看看下面的代码吧,实现以上所有功能。 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <bo 阅读详情

1.cart.js页面 购物车页面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>cart</title>
        <!--引入bootstrap.css-->
        <link rel="stylesheet" type="text/css" href="../../bootstrap/css/bootstrap.css"/>
        <!--引入myscss.css-->
        <link rel="stylesheet" type="text/css" href="../../css/myscss.css" />
        <!--引入jquery.js-->
        <script type="text/javascript" src="../../bootstrap/js/jquery-3.1.1.js"></script>
        <!--bootstrap.js-->
        <script type="text/javascript" src="../../bootstrap/js/bootstrap.js"></script>
        <!--head.js-->
        <script type="text/javascript" src="../common/head.js"></script>
        <!--cart.js-->
        <script type="text/javascript" src="cart.js"></script>
    </head>
    <body>
        <!--公用头部-->
        <div id="navhead"></div>
        <!--主体部分-->
        <div class="container">
            <div class="row">
                <div class="col-md-1"></div>
                <div class="col-md-10">
                    <!--content头部图片-->
                    <img src="../../img/otherimages/buy1.gif" />
                    <!--content中的table-->
                    <div class="panel panel-info margintop">
                        <div class="panel-heading text-center"><h4><strong>购物车列表</strong></h4></div>
                        <div id="cartable">
                            <!--<table class="table text-center">
                                <tr class="danger">
                                    <th class="text-center">序号</th>
                                    <th class="text-center">商品名称</th>
                                    <th class="text-center">价格</th>
                                    <th class="text-center">购买数量</th>
                                    <th class="text-center">库存</th>
                                    <th class="text-center">小计</th>
                                </tr>
                                <tr>
                                    <td>0</td>
                                    <td>Java模式</td>
                                    <td>21.5</td>
                                    <td><a class='glyphicon glyphicon-minus-sign' onclick='subBuyNum(this)'></a>1<a class='glyphicon glyphicon-plus-sign' onclick='addBuyNum(this)'></a></td>
                                    <td>100</td>
                                    <td>21.5</td>
                                </tr>
                                <tr>
                                    <td>1</td>
                                    <td>JavaScript</td>
                                    <td>18.5</td>
                                    <td>1</td>
                                    <td>100</td>
                                    <td>18.5</td>
                                </tr>
                            </table>-->
                        </div>
                        <div class="panel-footer clearfix"><span class="pull-right">总计</span></div>
                    </div>
                </div>
                <div class="col-md-1"></div>
            </div>
        </div>
    </body>
</html>

2.cart.js代码 实现动态修改购买条数和总计

//购物车动态添加购物车信息
$(function(){
    //1.从localStorage获取购物信息
    var books = localStorage.getItem("carts");
    var bookArr = JSON.parse(books);//将获取到的字符串存放进数组中
    //2.声明一个html用来拼接页面
    var html = "";
    html += "<table id='cart' class='table text-center'>";
    html +=     "<tr class='danger'>";
    html +=         "<th class='text-center'>序号</th>";
    html +=         "<th class='text-center'>商品名称</th>";
    html +=         "<th class='text-center'>价格</th>";
    html +=         "<th class='text-center'>购买数量</th>";
    html +=         "<th class='text-center'>库存</th>";
    html +=         "<th class='text-center'>小计</th>";
    html +=     "</tr>";
    //3.遍历数组
    for(var i = 0;i < bookArr.length;i++){
        //获取一本书
        var abook = bookArr[i];
        //将书本的信息填到表格中
        html +=     "<tr>";
        html +=         "<td>"+i+"</td>";
        html +=         "<td>"+abook.name+"</td>";
        html +=         "<td>"+abook.price+"</td>";
        html +=         "<td><a class='glyphicon glyphicon-minus-sign' onclick='subBuyNum(this)'></a>"+abook.buynum+"<a class='glyphicon glyphicon-plus-sign' onclick='addBuyNum(this)'></a></td>";
        html +=         "<td>"+abook.num+"</td>";
        html +=         "<td>"+abook.price*abook.buynum+"</td>";
        html +=     "</tr>";
    }
    html += "</table>";
    $("#cartable").html(html);
});
//点击减号按钮
function subBuyNum(caller){
    calFunction(caller,"sub");
}
//点击加号按钮
function addBuyNum(caller){
    calFunction(caller,"add");
}
//优化代码
function calFunction(caller,tag){
    //得到当前调用者的父节点
    var $parent = $(caller).parent();
    //找到父节点的文本信息
    var buyNum = parseInt($parent.text());
    //判断当前是+还是-
    if(tag == "sub"){
        //减号
        if(buyNum>=2){
            buyNum--;
        }
    }
    //加号
    else{
        buyNum++;
    }
    //4.拼接html信息,把html放到parent中
    var html = "";
    html += "<a class='glyphicon glyphicon-minus-sign' onclick='subBuyNum(this)'></a>"+buyNum+"<a class='glyphicon glyphicon-plus-sign' onclick='addBuyNum(this)'></a>";
    $parent.html(html);

    //5.找到价格元素的信息
    var $price = $parent.prev();
    var price = parseFloat($price.text());

    //6.修改小计元素的信息
    var $lastB = $parent.next().next();
    $lastB.text(price*buyNum);

    //7.修改总计元素的信息
    calTotal();

    //8.修改本地购物车的数量
    //8.1找到序号数列
    var $first = $parent.parent().children(":first-child");
    var n = parseInt($first.text());
    modiyBuyNum(n,buyNum);
}

//计算当前购物车的总价格
function calTotal(){
    var $totalPrice = $("#totalprice"); 
    //找到table里面的tbody,其实table的所有正文信息都放在tbody里面
    var $table = $("#cart").children();
    var $children = $table.children(":not(:first)");
    var $rowprices = $children.children(":last-child");
    var totalp = 0;
    $rowprices.each(function(){
        var p = parseFloat($(this).text());
        totalp += p;
    })
    $totalPrice.text("总计:"+totalp);
}

//页面一载入就计算总计购物车的总价信息
$(function(){
    calTotal();
})


//修改本地购物车的数量
function modiyBuyNum(idx,buynum){
    //1.获取本地购车的数据(字符串)
    var books = localStorage.getItem("carts");
    //2.把字符串转换为数组对象
    var bookArr = JSON.parse(books);
    //3.从数组中获取指定idx的数据
    var abook = bookArr[idx];
    //4.修改这条数据
    abook.buynum = buynum;
    //5.重新保存购物车
    var booksStr = JSON.stringify(bookArr);
    localStorage.setItem("carts",booksStr);
}

3.效果图片
效果图片

Onein Lab | 万应低代码实践指南,从0到1构建新能源汽车电商平台 万应低代码实践指南:如何从0到1快速构建一个汽车电商平台 阅读详情

相关推荐

web应用技术-课程设计

日常生活用品品类繁多、库存管理琐碎。传统的手工记录或电子表格管理方式存在数据分散、查询不便、更新不及时等问题。需要一个统一的商品信息管理平台来提升管理效率。技术选型后端框架ORM框架数据库MySQL 8.0前端构建工具开发语言Java 17开发工具。

2503_94037639的博客 200

智慧商城:购物车模块基本静态结构 + 构建vuex cart模块,获取数据存储(异步actions)

想要在( vuex) store文件夹下modules文件夹下的 cart.js 中存储数据,请求回来的数据存储,则应在actions中,因为mutatios中主要处理同步,请求数据本身涉及到异步操作,所以必须写在actions中。注:要进行请求并存储数据,在api文件夹下的cart模块中将请求方法封装,然后在存储store文件夹下的modules文件夹下的cart模块中调用该方法进行请求打印,而不是将请求打印写在cart.vue组件中了。需要使用的话必须在store文件夹下的 index.js中挂载。

m0_63178019的博客 427

JavaWeb毕业设计实战:网上书城项目全流程解析与核心代码实现

JavaWeb开发是构建企业级Web应用的核心技术栈,其基于Servlet、JSP和JavaBean的MVC模式,清晰地分离了业务逻辑、数据与表现层,是现代Web开发的基石。理解其原理,关键在于掌握HTTP请求/响应、会话管理及数据库交互等基础概念。这项技术的价值在于能够高效、稳定地开发出功能完备、易于维护的Web系统,广泛应用于电商、管理平台等各类互联网场景。本文以经典的“网上书城”项目为例,深入剖析其从架构设计到功能实现的完整流程。项目涵盖了用户管理、商品展示、购物车、订单处理等电商核心模块,并重点探讨

weixin_33462167的博客 252

使用vuex的模块化构建购物车17步骤:

本文要结合前面几篇文章才能串起来: vuex的基本使用8步骤——等同于购物车里面的数量增减: Vuex为什么要使用actions——差异化展示3步骤 vuex辅助函数mapState,mapGetters,mapMutations,mapActions的应用 3步骤教你如何在组件内部提交数据给vuex 项目目录如下: ...

jolinoy的博客 1116

SSM+JSP二手交易平台源码详解:环境部署、数据库设计与踩坑指南

在Java Web开发中,SSM(Spring+SpringMVC+MyBatis)与JSP的组合,常被用于构建结构清晰、易维护的企业级应用与课程设计项目。其核心原理是SpringMVC负责请求分发与视图控制,Spring管理业务对象与事务,MyBatis通过动态SQL完成MySQL数据库操作,最终由JSP在服务端渲染页面。理解这套调用链,有助于快速定位环境配置、依赖冲突和数据库连接等常见问题,也是从基础增删改查走向完整业务闭环的关键一步。在校园二手交易、电商教学等场景下,基于SSM+JSP的项目能够覆盖商

weixin_30444105的博客 371

Minicart.js.zip

Minicart.js 是一个很棒的方式来改善你的 PayPal 购物车的集成。你的用户可以直接在你的网站上管理他们的购物车。 标签:Minicart

javascript购物车实现详细代码讲解_javascript购物车代码

我们对主页进行设计之后,就可以进行与主页相关的DOM操作,涉及到添加按钮的点击事件,cookie和json的应用,cookie主要为了让当前数据与购物车进行共享,以方便操作。笔者在主页中点击了三种商品,共点击了七次,在购物车中出现了相应商品以及价格计算。因为上述代码中涉及了进入购物车后的一些操作,读者看了之后可能会感动疑惑,不用担心,下面请看点击进入我的购物车之后的分析。html结构代码有了之后,就可以对主页进行css表现设计,这里不对css进行过多讲解。描述:数据访问层,操作本地数据的模块。

2501_90404901的博客 446

jquery.cart.js:jquery ui 的滑动购物车插件

关于 这是一个 jquery ui 插件,它为您提供网页中的滑动购物车 如何使用 // See more in cart.js $ ( document ) . ready ( function ( ) { $ ( '#cart.test' ) . slidecart ( { } ) . addClass ( 'slidecart-test' ) ; } ) ;

前端必知必会-Chart.js

本文介绍了Chart.js的使用,如有问题欢迎私信和评论。

qq_24018193的博客 1107

前端项目-shopify-cartjs.zip

前端项目-shopify-cartjs,为购物主题提供购物车管理功能的javascript库。

购物车全选功能,总计功能,侧滑删除

购物车全选功能,总计功能,侧滑删除全部实现,只需要加入其他页面就可使用

android水果购物车,实现购物车功能

# 购物车购物车功能的实现思路:可以将购物车看成是一个类,在数据库中创建购物车表,往购物车添加商品的时候相当于在表中插入一条数据需要注意的是:添加商品的时候需要记录是哪个人添加的商品,这时候,微信提供接口可以直接获取用户信息。获取用户信息步骤:在项目的domain中加入Subscriber.groovy和SubscriberCookie.groovy两个类,在controller中加入Subscr...

weixin_34696129的博客 477

jQuery购物车商品数量加减合计特效代码

jQuery购物车商品数量加减合计代码是一款购物网站常用的购物车数量加减,勾选删除,添加行数,总计等。

程序员面试技巧:如何讲解自己做过的项目

程序员面试干货:如何讲解自己做过的项目 说到简历,对于IT这种比较偏重技术的岗位,企业最看重的就是项目经验,尤其是曾经做过的项目,用过的技术越匹配越好! 一封好的简历就是事业的敲门砖,如果你目前正在处于找工作的阶段,如何给面试官来讲一个项目呢,希望这篇文章可以帮助你。 先汇总: 我们这个项目是基于SOA的架构来实现的。采用的是dubbo中间件来实现表现层跟服务层之间的通信。我们项目分为前台后台,前...

Camel 1897

什么是plm系统?-数字化转型网

当今世界,产品研发能力是企业在激烈的市场竞争中保持战略优势的核心竞争力之一。如何有效地缩短产品研发周期、改善产品服务的设计迭代流程、有效降低产品的研发成本,也是企业面临的主要问题之一。PLM(Product Lifecycle Management,产品生命周期管理)在优化产品研发的全管理流程、增强企业产品的市场竞争力方面具有关键的作用。

cxo17757154043的博客 883

开发基于GDL235KBQ6开发板的IAP升级程序(HEX协议+串口空闲中断 + DMA接收数据)

使用GDL235kB开发板,实现串口iap升级程序的bootloader代码编写,app为led灯闪烁,并完成通信c代码

zhaozijuncc的博客 642

程序员面试干货:如何讲解自己做过的项目

程序员面试干货:如何讲解自己做过的项目 说到简历,对于IT这种比较偏重技术的岗位,企业最看重的就是项目经验,尤其是曾经做过的项目,用过的技术越匹配越好! 一封好的简历就是事业的敲门砖,如果你目前正在处于找工作的阶段,如何给面试官来讲一个项目呢,希望这篇文章可以帮助你。 先汇总: 我们这个项目是基于SOA的架构来实现的。采用的是dubbo中间件来实现表现层跟服务层之间的通信。我们项目分为前台...

Leonidas的博客 1万+

Android无线调试:adb tcpip连接实战指南

本文详细介绍了Android无线调试的完整流程,重点讲解如何使用adb tcpip命令通过Wi-Fi连接设备,摆脱数据线束缚。涵盖环境配置、连接实战、稳定性优化及常见问题排查,帮助开发者高效实现无线adb调试,提升工作效率。

pink的博客 722

关于分布式商城的项目讲解

我们这个项目是基于SOA的架构来实现的。采用的是dubbo中间件来实现表现层跟服务层之间的通信。 我们项目分为前台后台,前台提供内容展示,商品展示,商品搜索,购物车,订单等,支付等模块,后台提供管理商品,内容管理,订单管理等模块。 下面我给您具体介绍一下。 首先进入我们的网站首页:最上面是我们的网站的logo,搜索框,下面左边是测分类栏对商品进行分类,轮中间是轮播图广告位,跟着下面是新闻公告栏,再...

Java技术博客 4902

Android 11系统定制:如何彻底隐藏状态栏电池图标(RK3568实测)

本文详细解析了在Android 11系统上如何通过多维度修改实现状态栏电池图标的彻底隐藏,特别针对RK3568平台提供了实战指南。从系统UI架构解析到核心配置文件修改,再到进阶技巧与疑难排查,帮助开发者深度定制Android系统,满足特定场景需求。

weixin_29250573的博客 376

基于 parallels ubuntu 20.04 LTS (focal) 的ros+px4+gazebo 安装

基于 parallels ubuntu 20.04 LTS (focal) 的ros+px4+gazebo 安装。

weixin_40132006的博客 2241

面试的时候如何进行项目讲解?

我们这个项目是基于SOA的架构来实现的。采用的是dubbo中间件来实现表现层跟服务层之间的通信。我们项目分为前台后台,前台提供内容展示,商品展示,商品搜索,购物车,订单等模块,支付,客服中心等模块,后台提供管理商品,内容管理,订单管理,采购财务管理等模块。 下面我给您具体介绍一下。 首先进入我们的网站首页:最上面是我们的网站的logo,搜索框,下面左边是测分类栏对商品进行分类,轮中间是轮播图广...

gaoyifeng1987的博客 3764

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

Xilinx Vivado LDPC IP core,TSN IP core. 各种IP core

qq_1432825237的博客 3991

Java Web网上购物系统课设实战:从MVC架构到高并发事务处理

在Java Web开发领域,MVC(Model-View-Controller)架构模式是构建可维护、可扩展Web应用的核心设计思想。其原理在于将业务逻辑、数据模型和用户界面分离,通过控制器协调交互,从而提升代码的模块化和复用性。这一模式的技术价值在于为复杂业务系统提供了清晰的职责划分,是理解企业级应用开发的基础。在实际应用中,诸如网上购物系统这类典型电商场景,正是MVC架构发挥价值的舞台,它需要处理用户认证、商品管理、订单生成等一系列核心业务。而确保这些业务在并发环境下正确执行,离不开数据库事务的ACID

weixin_33713503的博客 374

从UART到RS485:手把手教你用SIT3485E收发器搞定工业级通信(含原理图与PCB布局要点)

本文详细解析了从UART到RS485的工业级通信转换,重点介绍了SIT3485E收发器的原理图设计、PCB布局要点及抗干扰技巧。通过差分信号传输和优化电路设计,实现长距离、多设备稳定通信,适用于工业自动化等复杂环境。

weixin_29169505的博客 349

23 中望CAD二次开发(ZRX C++)-自定义实体(二)

本文详细介绍了自定义图形实体,如何实现几何变换、捕捉、节点编辑,并介绍了CAD代理的概念。

cilvsuanna的博客 437
上一篇: 图书购买系统,本地添加购物车(不需要登录一样可以添加购物车,结算时需要登录)
下一篇: JSON的学习和使用
Java_jfei
博客等级 码龄10年 55粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值