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 相关文章推荐
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
Jan 29 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
Aug 01 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
Dec 16 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
Dec 24 Javascript
使用typeof判断function是否存在于上下文
Aug 14 Javascript
基于jquery实现日历签到功能
Sep 11 Javascript
Angular JS数据的双向绑定详解及实例
Dec 31 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
May 26 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
Feb 11 Javascript
JS中FileReader类实现文件上传及时预览功能
Mar 27 Javascript
Vue单页面应用中实现Markdown渲染
Feb 14 Vue.js
CocosCreator如何实现划过的位置显示纹理
Apr 14 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
php实现Mysql简易操作类
2015/10/11 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
js获取当前年月日-YYYYmmDD格式的实现代码
2016/06/01 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
Python 面向对象 成员的访问约束
2008/12/23 Python
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
运动会广播稿200字
2014/01/15 职场文书
新学期开学寄语
2014/01/18 职场文书
运动会入场词200字
2014/02/15 职场文书
国庆宣传标语
2014/06/30 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
详解Mysql和Oracle之间的误区
2021/05/18 MySQL