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 相关文章推荐
新手常遇到的一些jquery问题整理
Aug 16 Javascript
JS求平均值的小例子
Nov 29 Javascript
JS获取节点的兄弟,父级,子级元素的方法
Jan 09 Javascript
做好七件事帮你提升jQuery的性能
Feb 06 Javascript
在JavaScript中call()与apply()区别
Jan 22 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
May 30 Javascript
详解微信小程序开发之城市选择器 城市切换
Jan 17 Javascript
js canvas实现QQ拨打电话特效
May 10 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
Angular2安装angular-cli
May 21 Javascript
Nuxt.js踩坑总结分享
Jan 18 Javascript
详解vue中使用protobuf踩坑记
May 07 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
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
解决php接收shell返回的结果中文乱码问题
2014/01/23 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
JavaScript对象的property属性详解
2014/04/01 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
浅析JavaScript动画
2015/06/10 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
Vue响应式原理详解
2017/04/18 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
简单谈谈Python中的闭包
2016/11/30 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
django创建简单的页面响应实例教程
2019/09/06 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
canvas实现俄罗斯方块的方法示例
2018/12/13 HTML / CSS
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
房屋过户委托书范本
2014/10/07 职场文书
上课说话检讨书500字
2014/11/01 职场文书
68句权威创业名言
2019/08/26 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python