jquery.cookie实现的客户端购物车操作实例


Posted in Javascript onDecember 24, 2015

本文实例讲述了jquery.cookie实现的客户端购物车操作。分享给大家供大家参考,具体如下:

//购物车
var Cart = function () {
  this.Count = 0;
  this.Total = 0;
  this.Items = new Array();
};
//购物车集合对象
var CartItem = function () {
  this.Id = 0;
  this.Name = "";
  this.Count = 0;
  this.Price = 0;
};
 
//购物车操作
var CartHelper = function () {
  this.cookieName = "yxhCart";
  this.Clear = function () {
    var cart = new Cart();
    this.Save(cart);
    return cart;
  };
  //向购物车添加
  this.Add = function (id, name, count, price) {
    var cart = this.Read();
    var index = this.Find(id);
    //如果ID已存在,覆盖数量
    if (index > -1) {
      cart.Total -= (((cart.Items[index].Count * 100) * (cart.Items[index].Price * 100)) / 10000);
      cart.Items[index].Count = count;
      cart.Total += (((cart.Items[index].Count * 100) * (cart.Items[index].Price * 100)) / 10000);
    } else {
      var item = new CartItem();
      item.Id = id;
      item.Name = name;
      item.Count = count;
      item.Price = price;
      cart.Items.push(item);
      cart.Count++;
      cart.Total += (((cart.Items[index].Count * 100) * (cart.Items[index].Price * 100)) / 10000);
    }
    this.Save(cart);
    return cart;
  };
  //改变数量
  this.Change = function (id, count) {
    var cart = this.Read();
    var index = this.Find(id);
    cart.Items[index].Count = count;
    this.Save(cart);
    return cart;
  };
  //移出购物车
  this.Del = function (id) {
    var cart = this.Read();
    var index = this.Find(id);
    if (index > -1) {
      var item = cart.Items[index];
      cart.Count--;
      cart.Total = cart.Total - (((item.Count * 100) * (item.Price * 100)) / 10000);
      cart.Items.splice(index, 1);
      this.Save(cart);
    }
    return cart;
  };
  //根据ID查找
  this.Find = function (id) {
    var cart = this.Read();
    var index = -1;
    for (var i = 0; i < cart.Items.length; i++) {
      if (cart.Items[i].Id == id) {
        index = i;
      }
    }
    return index;
  };
  //COOKIE操作
  this.Save = function (cart) {
    var source = "";
    for (var i = 0; i < cart.Items.length; i++) {
      if (source != "") { source += "|$|"; }
      source += this.ItemToString(cart.Items[i]);
    }
    $.cookie(this.cookieName, source);
  };
  this.Read = function () {
    //读取COOKIE中的集合
    var source = $.cookie(this.cookieName);
    var cart = new Cart();
    if (source == null || source == "") {
      return cart;
    }
    var arr = source.split("|$|");
    cart.Count = arr.length;
    for (var i = 0; i < arr.length; i++) {
      var item = this.ItemToObject(arr[i]);
      cart.Items.push(item);
      cart.Total += (((item.Count * 100) * (item.Price * 100)) / 10000);
    }
    return cart;
  };
  this.ItemToString = function (item) {
    return item.Id + "||" + escape(item.Name) + "||" + item.Count + "||" + item.Price;
  };
  this.ItemToObject = function (str) {
    var arr = str.split('||');
    var item = new CartItem();
    item.Id = arr[0];
    item.Name = unescape(arr[1]);
    item.Count = arr[2];
    item.Price = arr[3];
    return item;
  };
};

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
基于node.js的快速开发透明代理
Dec 25 Javascript
javascript对象的创建和访问
Mar 08 Javascript
js定时器实例分享
Dec 20 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
JavaScript实现网页头部进度条刷新
Apr 16 Javascript
JS中Safari浏览器中的Date
Jul 17 Javascript
清空元素html(&quot;&quot;) innerHTML=&quot;&quot; 与 empty()的区别和应用(推荐)
Aug 14 Javascript
vue组件中使用props传递数据的实例详解
Apr 08 Javascript
JS中验证整数和小数的正则表达式
Oct 08 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
Sep 16 Javascript
微信小程序实现页面监听自定义组件的触发事件
Nov 01 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
jQuery基于cookie实现的购物车实例分析
Dec 24 #Javascript
jQuery实现网页顶部固定导航效果代码
Dec 24 #Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
Dec 24 #Javascript
基于jQuery实现左右图片轮播(原理通用)
Dec 24 #Javascript
jquery捕捉回车键及获取checkbox值与异步请求的方法
Dec 24 #Javascript
jquery遍历函数siblings()用法实例
Dec 24 #Javascript
jQuery中的siblings用法实例分析
Dec 24 #Javascript
You might like
PHP 5.0 Pear安装方法
2006/12/06 PHP
关于crontab的使用详解
2013/06/24 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
php的ajax简单实例
2014/02/27 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
PHP两种快速排序算法实例
2015/02/15 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
悬浮数字的实现案例
2014/02/19 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
AngularJS动态菜单操作指令
2017/04/25 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
解决vue项目打包后提示图片文件路径错误的问题
2018/07/04 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
使用Python操作ArangoDB的方法步骤
2020/02/02 Python
获奖的大学生创业计划书
2014/01/05 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
社区禁毒工作方案
2014/06/02 职场文书
干部对照检查材料范文
2014/08/26 职场文书
统招统分证明
2015/06/23 职场文书
个人售房合同协议书
2016/03/21 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL