基于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创建鼠标悬停效果的方法
Mar 07 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
学习jQuey中的return false
Dec 18 Javascript
AngularJS入门教程之链接与图片模板详解
Aug 19 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
Jan 19 Javascript
关于angular js_$watch监控属性和对象详解
Apr 24 Javascript
详解bootstrap导航栏.nav与.navbar区别
Nov 23 Javascript
Angular使用操作事件指令ng-click传多个参数示例
Mar 27 Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 Javascript
使用layer模态框给新页面传值的方法
Sep 27 Javascript
vue实现Input输入框模糊查询方法
Jan 29 Javascript
vue选项卡切换的实现案例
Apr 11 Vue.js
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中使用Oracle数据库(6)
2006/10/09 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
基于递归实现的php树形菜单代码
2014/11/19 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
Javascript Global对象
2009/08/13 Javascript
JS 对象介绍
2010/01/20 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
Python smallseg分词用法实例分析
2015/05/28 Python
Python网络编程 Python套接字编程
2017/09/13 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
python实现月食效果实例代码
2019/06/18 Python
Python编写打字训练小程序
2019/09/26 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
2014端午节活动策划方案
2014/01/27 职场文书
五年级科学教学反思
2014/02/05 职场文书
企业总经理岗位职责
2014/02/13 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
井冈山红色之旅心得体会
2014/10/07 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
2015中学学校工作总结
2015/07/20 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
值班管理制度范本
2015/08/06 职场文书
企业安全生产检查制度
2015/08/06 职场文书
体育教师教学随笔
2015/08/15 职场文书
浅谈Python魔法方法
2021/06/28 Java/Android
服务器间如何实现文件共享
2022/05/20 Servers