基于JQuery的购物车添加删除以及结算功能示例


Posted in Javascript onMarch 08, 2017

前段时间了解到购物车结算算是一个难点部分,在网上也找了一些,但是网上除了插件之外,就是一些半成品,比如一部分只有添加删除效果,另一部分只有结算功能,很少见到整合在一起的购物车效果,因此自己写了一个,方便大家查看
(添加效果没有飞入,实在懒得写动画效果了,凑合看吧)

HTML部分

<!DOCTYPE html> 
<html> 
<head> 
   <meta charset="utf-8"> 
   <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
   <title></title> 
   <link rel="stylesheet" href="css/index.css" rel="external nofollow" > 
   <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js" type="text/javascript" charset="utf-8"></script> 
   <script src="js/index.js" type="text/javascript" charset="utf-8" async defer></script> 
</head> 
<body> 
   <div id="banner"></div> 
   <div id="container"> 
    <ul> 
      <li num="1"><img src="images/1.jpg"/><span class="things_name">2014年春季爆品A<p>$<i>10</i><span class="buy">点击购买</p></li> 
      <li num="2"><img src="images/2.jpg"/><span class="things_name">2014年春季爆品B<p>$<i>20</i><span class="buy">点击购买</p></li> 
      <li num="3"><img src="images/3.jpg"/><span class="things_name">2014年春季爆品C<p>$<i>30</i><span class="buy">点击购买</p></li> 
      <li num="4"><img src="images/4.jpg"/><span class="things_name">2014年春季爆品D<p>$<i>40</i><span class="buy">点击购买</p></li> 
    </ul> 
   </div> 
    
   <div id="carlist"> 
    <div class="car"> 
      <div> 
        <span class="carLogo"><span><img src="images/car.png"/> 
        <span class="txt">购<br />物<br />车 
      </div> 
       
    </div> 
    <div class="list"> 
      <!--此处添加动态元素--> 
      <div class="total"> 
        <span>总价:<span>0元 
      </div> 
    </div> 
   </div> 
   <script type="text/javascript"> 
    function view(){ 
          return{ 
            w:document.documentElement.clientWidth, 
            h:document.documentElement.clientHeight 
          }; 
        } 
        document.body.style.height=view().h+"px"; 
   </script> 
</body> 
</html>

JS部分 

$(function(){ 
 var mark=0; 
 $(".car").on("click",function(){ 
   if(mark==0){ 
     $("#carlist").animate({marginRight:"0px"},500) 
     mark=1; 
   }else{ 
     $("#carlist").animate({marginRight:"-260px"},500) 
     mark=0 
   } 
 }) 
 
 
 //点击购买按钮添加至购物车 
 var buyButton=$(".buy"); 
 buyButton.on("click",BuyClick) 

 function BuyClick(){ 
   var thingsName=$(this).parents("li").find(".things_name").text(); 
   var thingsPrice=$(this).parent().find("i").text(); 
   var thingsImage=$(this).parents("li").find("img").attr("src"); 
   var kNum=$(this).parents("li").attr("num") 
   var Geshu=1; 
   $(this).off("click").text("已经添加至购物车"); 
       
   $(".list").append('<div class="select things" num='+kNum+'><img src='+thingsImage+'/><p class="name">'+thingsName+'</p><p class="price">$<i>'+thingsPrice+'</i></p><ul class="caozuo"><li class="zengjian"><span class="minus">-<span>1<span class="add">+</li><li class="del">删除</li></ul></div>'); 
   countTotalPrice(); 
   totalGeshu(); 
    
   //点击加号添加商品个数 
    
   $(".add").off("click").on("click",function(){ 
     Geshu=parseInt($(this).parent().find("span:nth-of-type(2)").text()) 
     Geshu++ 
     $(this).parent().find("span:nth-of-type(2)").text(Geshu) 
     countTotalPrice(); 
     totalGeshu(); 
   }) 
    
   //动态生成的元素点击减号减少商品个数 
   $(".minus").off("click").on("click",function(){ 
     Geshu=parseInt($(this).parent().find("span:nth-of-type(2)").text()); 
     if(Geshu>1){ 
       Geshu--; 
       $(this).parent().find("span:nth-of-type(2)").text(Geshu) 
     }else{ 
       Geshu==1; 
     } 
     countTotalPrice(); 
     totalGeshu(); 
   }) 
    
   //删除购物车内的商品 
   var del=$(".del"); 
   del.each(function(){ 
     $(this).off("click").on("click",function(){ 
       var delName=$(this).parents(".things").find(".name").text(); 
       $(this).parents(".things").remove(); 
       countTotalPrice(); 
       totalGeshu(); 
       var oldBtn=$("#container ul li").find("span:contains("+delName+")").parents("li").find(".buy") 
       oldBtn.on("click",BuyClick).text("点击购买") 
     }) 
   }) 
 
   //计算总价函数 
   function countTotalPrice(){       
     var totalPrice=0,listThings=$(".list").find(".things"); 
     for (var i=0;i<listThings.length;i++) { 
       var this_geshu=parseInt(listThings.eq(i).find(".zengjian span:nth-of-type(2)").text()); 
       var this_price=parseInt(listThings.eq(i).find(".price i").text()); 
       totalPrice+=this_geshu*this_price; 
     } 
     $(".total span").eq(1).text(totalPrice); 
     totalGeshu(); 
   } 
    
   //购物车上的商品总数 
   function totalGeshu(){ 
     var listThings=$(".list").find(".things"); 
     if (listThings.length>0) { 
       var totalGeshu=0; 
       listThings.each(function(){ 
         var this_geshu=parseInt($(this).find(".zengjian span:nth-of-type(2)").text()); 
         totalGeshu+=this_geshu; 
       }) 
       $(".carLogo span").html(totalGeshu) 
     } else{ 
       $(".carLogo span").css("display","none") 
     } 
   } 
 } 
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 框架使用教程 AJAX篇
Oct 11 Javascript
层序遍历在ExtJs的TreePanel中的应用
Oct 16 Javascript
Angular用来控制元素的展示与否的原生指令介绍
Jan 07 Javascript
javascript模拟评分控件实现方法
May 13 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
Sep 20 Javascript
浅谈Web页面向后台提交数据的方式和选择
Sep 23 Javascript
react native仿微信PopupWindow效果的实例代码
Aug 07 Javascript
vue-cli脚手架的安装教程图解
Sep 02 Javascript
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
Nov 15 Javascript
JS数组方法join()用法实例分析
Jan 18 Javascript
v-slot和slot、slot-scope之间相互替换实例
Sep 04 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
Mar 08 #Javascript
详谈jQuery中的一些正则匹配表达式
Mar 08 #Javascript
浅谈原生JS实现jQuery的animate()动画示例
Mar 08 #Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 #Javascript
bootstrap table 多选框分页保留示例代码
Mar 08 #Javascript
JS仿JQuery选择器功能
Mar 08 #Javascript
vue数据双向绑定原理解析(get &amp; set)
Mar 08 #Javascript
You might like
目录,文件操作详谈―PHP
2006/11/25 PHP
E路文章系统PHP
2006/12/11 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
Vue退出登录时清空缓存的实现
2019/11/12 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
详解django中自定义标签和过滤器
2017/07/03 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
高级护理专业大学生求职信
2013/10/24 职场文书
土木工程应届生求职信
2013/10/31 职场文书
医药代表个人的求职信分享
2013/12/08 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
营销经理工作检讨书
2014/11/03 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS