效果

需求分析

每一件复杂的事情都是由简单的事情构成,将简单的事做好了,复杂的事自然就做好了

  1. 商品列表 勾选点击事件
  2. 商品结算 全选点击事件
  3. 商品列表 添加+减少 - 点击事件
    拓展功能 直接修改商品数量
  4. 商品列表 删除点击事件
  5. 商品结算 全删点击事件

思路及其实现

  • 1.商品列表 勾选点击事件 全选

    • 通过prop()方法将全选按钮的状态设置给列表清单
 // 1.商品列表   勾选点击事件 全选$('#checked-all-bottom').click(function () {$('.goods-list-item').prop('checked', $(this).prop('checked'));// 展示总金额和总数量showTotalMoney();});
  • 2.商品结算 列表点击事件

    • 判断列表是否全部选中,全部选中则全选按钮勾上

      • 通过:checked获得选中的数量与列表清单比较相等则全部选中
 // 2.商品结算   列表点击事件$('.goods-list-item').click(function () {$('#checked-all-bottom').prop('checked', $('.goods-list-item').length == $('.goods-list-item:checked').length);// 展示总金额和总数量showTotalMoney();});
  • 3.商品列表 添加+减少 - 点击事件

    • 获取当前按钮所在的商品下标(有了下标就知道用户操作的是第几个商品)
    • 通过hasClass()方法判断点击的是加号还是减号
    • 通过DOM对象 $('.goods-count').eq(index)[0].value++;改变值
    • 减号所减数量必须大于0
    • 单价 * 数量 = 总价格
 // 3.商品列表   添加+减少 - 点击事件$('.car-decrease,.car-add').click(function () {// 3.1.获取当前按钮所在的商品下标(有了下标就知道用户操作的是第几个商品)let index = $(this).parents('.goods-item').index();if ($(this).hasClass('car-add')) { //增加$('.goods-count').eq(index)[0].value++;} else {// 减到0则不能再减// 关系运算符会把其他数据类型转换成number之后再比较关系if ($('.goods-count').eq(index).val() > 0) {$('.goods-count').eq(index)[0].value--;}}// 3.2.修改商品总价格$('.single-total').eq(index).text($('.goods-count').eq(index).val() * $('.single-price').eq(index).text());// 展示总金额和总数量showTotalMoney();});
  • 拓展功能直接修改数量

    • 获取当前按钮所在的商品下标(有了下标就知道用户操作的是第几个商品)
 // 拓展功能:输入框失去焦点$('.goods-count').blur(function () {// 1.获取当前元素所在的商品下标let index = $(this).parents('.goods-item').index();$('.single-total').eq(index).text($('.single-price').eq(index).text() *          $('.goods-count').eq(index).val());// 展示总金额和总数量showTotalMoney();});
  • 4.商品列表 删除点击事件

    • 找到商品所在的父级元素调用remove();方法
// 4.商品列表    删除点击事件$('.item-delete').click(function () {if (confirm('确定要删除?')) {$(this).parents('.goods-item').remove();// 展示总金额和总数量showTotalMoney();}});
  • 5.商品结算 全删点击事件

    • 调用empty();方法
 // 5.商品结算   全删点击事件$('#deleteMulty').click(function () {if (confirm('确定要清空所有的商品?')) {$('.goods-content').empty();$('#checked-all-bottom').prop('checked',false);// 展示总金额和总数量showTotalMoney();}});
  • 封装展示金额和总数量的函数

    • 箩筐思想
    • 1.准备两个空箩筐
    • 2.遍历萝卜数
    • 3.判断每一个列表里面的勾选按钮是否选中,选中则放入箩筐
 // 封装展示金额和总数量的函数function showTotalMoney() {// 一:箩筐思想求和:固定三个步骤// 1.声明空箩筐let sumMoney = 0; //总金额let sumCount = 0; //总数量// 2.遍历萝卜堆数:获取每一个商品列表for (let i = 0; i < $('.goods-item').length; i++) {// 判断每一个列表里面的勾选按钮是否选中if ($('.goods-list-item').eq(i).prop('checked')) {// 3.放入箩筐// 注意点:默认元素文本是字符串需要转成数字之后再来做加法运算sumCount += +$('.goods-count').eq(i).val();sumMoney += +$('.single-total').eq(i).text();}};// 二:求和结束,显示到页面$('#selectGoodsCount').text(sumCount);$('#selectGoodsMoney').text(sumMoney);};

完整源码

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>购物车结算页面</title><!-- bootstrap三个文件 --><script type="text/javascript" src="js/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="css/bootstrap.css"><link type="text/css" rel="stylesheet" href="css/style.css" /><!-- 模拟服务器:动态加载页面数据 (暂时不做研究) --><script type="text/javascript" src="js/script.js"></script>
</head><body><div class="shopping-car-container"><div class="car-headers-menu"><div class="row"><div class="col-md-1 car-menu"><label><span id="checkAll">全选</span></label></div><div class="col-md-3 car-menu">商品信息</div><div class="col-md-3 car-menu">商品参数</div><div class="col-md-1 car-menu">单价</div><div class="col-md-1 car-menu">数量</div><div class="col-md-1 car-menu">金额</div><div class="col-md-2 car-menu">操作</div></div></div><div class="goods-content"><!--goods display--></div><div class="panel panel-default"><div class="panel-body bottom-menu-include"><div class="col-md-1 check-all-bottom bottom-menu"><label><input type="checkbox" id="checked-all-bottom" /><span id="checkAllBottom">全选</span></label></div><div class="col-md-1 bottom-menu"><span id="deleteMulty">删除</span></div><div class="col-md-6 bottom-menu"></div><div class="col-md-2 bottom-menu"><span>已选商品 <span id="selectGoodsCount">0</span> 件</span></div><div class="col-md-1 bottom-menu"><span>合计:<span id="selectGoodsMoney">0.00</span></span></div><div class="col-md-1 bottom-menu submitData submitDis">结算</div></div></div></div><script src="./js/jquery.min.js"></script><script>//入口函数 :  等DOM树 + 外部资源路径加载完毕后执行//实际开发中页面数据不是写死的,而是从服务器加载,需要一会儿时间// 如果不用入口函数则需使用委托window.onload = function () {/* 需求分析:1.商品列表 勾选点击事件2.商品结算    全选点击事件3.商品列表    添加+减少 - 点击事件拓展功能   直接修改商品数量4.商品列表  删除点击事件5.商品结算    全删点击事件*/// 1.商品列表   勾选点击事件 全选$('#checked-all-bottom').click(function () {$('.goods-list-item').prop('checked', $(this).prop('checked'));// 展示总金额和总数量showTotalMoney();});// 2.商品结算   列表点击事件$('.goods-list-item').click(function () {$('#checked-all-bottom').prop('checked', $('.goods-list-item').length == $('.goods-list-item:checked').length);// 展示总金额和总数量showTotalMoney();});// 3.商品列表     添加+减少 - 点击事件$('.car-decrease,.car-add').click(function () {// 3.1.获取当前按钮所在的商品下标(有了下标就知道用户操作的是第几个商品)let index = $(this).parents('.goods-item').index();if ($(this).hasClass('car-add')) { //增加$('.goods-count').eq(index)[0].value++;} else {// 减到0则不能再减// 关系运算符会把其他数据类型转换成number之后再比较关系if ($('.goods-count').eq(index).val() > 0) {$('.goods-count').eq(index)[0].value--;}}// 3.2.修改商品总价格$('.single-total').eq(index).text($('.goods-count').eq(index).val() * $('.single-price').eq(index).text());// 展示总金额和总数量showTotalMoney();});// 拓展功能:输入框失去焦点$('.goods-count').blur(function () {// 1.获取当前元素所在的商品下标let index = $(this).parents('.goods-item').index();$('.single-total').eq(index).text($('.single-price').eq(index).text() * $('.goods-count').eq(index).val());// 展示总金额和总数量showTotalMoney();});// 4.商品列表  删除点击事件$('.item-delete').click(function () {if (confirm('确定要删除?')) {$(this).parents('.goods-item').remove();// 展示总金额和总数量showTotalMoney();}});// 5.商品结算  全删点击事件$('#deleteMulty').click(function () {if (confirm('确定要清空所有的商品?')) {$('.goods-content').empty();$('#checked-all-bottom').prop('checked',false);// 展示总金额和总数量showTotalMoney();}});// 封装展示金额和总数量的函数function showTotalMoney() {// 一:箩筐思想求和:固定三个步骤// 1.声明空箩筐let sumMoney = 0; //总金额let sumCount = 0; //总数量// 2.遍历萝卜堆数:获取每一个商品列表for (let i = 0; i < $('.goods-item').length; i++) {// 判断每一个列表里面的勾选按钮是否选中if ($('.goods-list-item').eq(i).prop('checked')) {// 3.放入箩筐// 注意点:默认元素文本是字符串需要转成数字之后再来做加法运算sumCount += +$('.goods-count').eq(i).val();sumMoney += +$('.single-total').eq(i).text();}};// 二:求和结束,显示到页面$('#selectGoodsCount').text(sumCount);$('#selectGoodsMoney').text(sumMoney);};}</script>
</body></html>

jQuery——淘宝购物车结算页面demo相关推荐

  1. 淘宝购物车web页面模仿

    采用HTML+CSS+原生JS手写,未使用组件开发. 效果图如下: 初始页面效果 目前可以实现动态添加商品,通过随机函数生成随机数,从已有的数据中选择商品数据添加到页面,生成的商品可以从列表中删除: ...

  2. 淘宝购物车页面 PC端和移动端实战

    最近花了半个月的时间,做了一个淘宝购物车页面的Demo.当然,为了能够更加深入的学习,不仅仅有PC端的固定宽度的布局,还实现了移动端在Media Query为768px以下(也就是实现了ipad,ip ...

  3. bootstrap淘宝购物车添加结算代码

    bootstrap淘宝购物车添加结算代码 jQuery制作淘宝商品购物车系统,支持全选.增加或减少.商品数量累计等功能.这是一款bootstrap布局的购物车结算页面设计代码. 演示地址 下载地址

  4. 仿淘宝购物车demo 增加和减少商品数量

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在上一篇 ...

  5. HTML淘宝购物车页面的实现

    一.实验目的和要求 本实验任务用HTML基本标签制作一个简单的淘宝购物车页面,具体要求如下: 以纯文本格式保存为*.html文件 使用表格标签.div标签.span标签.图像标签等实现效果设计 启用浏 ...

  6. 淘宝购物车页面 智能搜索框Ajax异步加载数据

    如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...

  7. python+selenium+chrome实现淘宝购物车秒杀自动结算

    python+selenium+chrome实现淘宝购物车秒杀自动结算 一.所需环境 二.安装 三.代码 最后run()一把就ok了!! 之前总是想要买aj,但是淘宝店铺每次发售手动抢的时候一般都会被 ...

  8. 淘宝购物车页面测试用例

    淘宝购物车的功能测试点有很多,这里我只写一部分,如图: 欢迎补充!!!!!!!!

  9. 淘宝购物车前端(JS和Angularjs版本)

    今天用HTML和JS实现以下购物车,然后再用Angualrjs再去实现一下购物车的前端实现. 功能页面分析: 既然是做模仿淘宝购物车,肯定要先去分析一下淘宝的购物车页面,自己去淘宝卖了两件东西,看了下 ...

  10. 测试网页版淘宝购物车

    测试网页版淘宝购物车 界面测试: 1. 购物车页面布局是否合理,显示是否完整 2. 鼠标浮动在购物车图标,迷你购物车界面显示是否正常 3. 不同店铺的商品在不同的区域正确显示 4. 页面的菜单功能栏正 ...

最新文章

  1. 别再用 BeanUtils 了,这款 PO VO DTO 转换神器不香么?
  2. abb焊接机器人编程全解_焊接机器人的焊枪编程也是很重要的
  3. 9.3 图像变换(尺寸变换、旋转变换、灰度变换和数据类型变换)
  4. LinkedList 模拟栈和队列
  5. wordpress php7 mysql_WordPress可以使用PHP7的MySQLi扩展
  6. SQL Server中Text和varchar(max)数据类型区别
  7. DES, TripleDES and BlowFish in Silverlight
  8. 我的Linux系统的一些截图 之二
  9. MySQL添加唯一约束和联合唯一约束(建表后添加)
  10. 面向对象及软件工程——团队作业3
  11. 通过指针获取输入的字符串
  12. 2.支付平台架构:业务、规划、设计与实现 --- 收银台系统
  13. 小明刚刚看完电影《第39级台阶》离开电影院的时候,他数了一下礼堂前的台阶,刚好是39级 站在台阶前,他突然又想到了一个问题 如果我每步只能迈上一个或者两个台阶,先迈左脚,然后左右交替,也就是说一共
  14. iis6安装PHPManager和URL Rewrite
  15. 计算机管理系统论文参考文献,关于计算机系统管理的论文参考文献 计算机系统管理论文参考文献哪里找...
  16. 英语句子划分表示符号使用规则
  17. java-assured_java - rest-assured 接口测试
  18. c语言代码存放的区域 堆栈,C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)...
  19. 【渝粤题库】广东开放大学 市场调查与预测 形成性考核
  20. 51单片机实验之流水灯和交替闪烁

热门文章

  1. 深析Vue双向数据绑定(MVVM模型)
  2. 安搭Share:霜降来,寒意到
  3. transforms常用函数简介
  4. mac部署rabbitmq流程与异常总结
  5. Java不同字符使用下划线分隔_004_Java语言基础(a-变量)
  6. 斐讯M1,nodered打包显示在homekit
  7. android-第一行代码-第六章数据储存——持久化技术 含MMKV和Room新知识点(温故而知新)学习记录
  8. SX1308电压调节,踩坑
  9. 经典基础教程---Programming TCP/IP Windows Sockets in C++
  10. UVCCamera AndroidUSBCamera示例运行错误的解决办法