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 相关文章推荐
javascript getElementsByTagName
Jan 31 Javascript
JavaScript利用正则表达式去除日期中的“-”
Jul 01 Javascript
jQuery拖动布局其结果保存到数据库
Oct 09 Javascript
Kindeditor在线文本编辑器如何过滤HTML
Apr 14 Javascript
深入理解$.each和$(selector).each
May 15 Javascript
jquery仿京东商品放大浏览页面
Jun 06 jQuery
vue router自动判断左右翻页转场动画效果
Oct 10 Javascript
在vue中封装可复用的组件方法
Mar 01 Javascript
jQuery pager.js 插件动态分页功能实例分析
Aug 02 jQuery
JavaScript实现公告栏上下滚动效果
Mar 13 Javascript
详解Typescript 内置的模块导入兼容方式
May 31 Javascript
vue封装数字翻牌器
Apr 20 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
php在线生成ico文件的代码
2007/10/09 PHP
PHP 日常开发小技巧
2009/09/23 PHP
linux下php上传文件注意事项
2016/06/11 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
python计算列表内各元素的个数实例
2018/06/29 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
对python字典过滤条件的实例详解
2019/01/22 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
函授毕业生的自我鉴定
2013/11/26 职场文书
医科大学生的自我评价
2013/12/04 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
员工2014年度工作总结
2014/12/09 职场文书
推销搭讪开场白
2015/05/28 职场文书
无故旷工检讨书
2015/08/15 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python