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 DOM学习第一章 W3C DOM简介
Feb 19 Javascript
js动态添加onclick事件可传参数与不传参数
Jul 29 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
Oct 08 Javascript
js css+html实现简单的日历
Jul 14 Javascript
js微信支付实现代码
Dec 22 Javascript
Angular.JS去掉访问路径URL中的#号详解
Mar 30 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
Oct 25 Javascript
解决vue打包项目后刷新404的问题
Mar 06 Javascript
webpack4 + react 搭建多页面应用示例
Aug 03 Javascript
微信小程序收货地址API兼容低版本解决方法
May 18 Javascript
js事件触发操作实例分析
Jun 21 Javascript
javascript 数组(list)添加/删除的实现
Dec 17 Javascript
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
图书管理程序(三)
2006/10/09 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
thinkphp缓存技术详解
2014/12/09 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
JavaScript迭代器的含义及用法
2019/06/21 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
2019/07/19 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
简历中个人求职的自我评价模板
2013/11/29 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
寄语是什么意思
2014/04/10 职场文书
校长四风对照检查材料
2014/09/27 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
python区块链实现简版工作量证明
2022/05/25 Python