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中的原型prototype属性使用详解
Jun 05 Javascript
简单介绍JavaScript中字符串创建的基本方法
Jul 07 Javascript
Bootstrap每天必学之滚动监听
Mar 16 Javascript
Bootstrap选项卡动态切换效果
Nov 28 Javascript
详解webpack打包vue时提取css
May 26 Javascript
详解webpack 多入口配置
Jun 16 Javascript
JS实现留言板功能
Jun 17 Javascript
微信小程序云开发如何使用npm安装依赖
May 18 Javascript
json数据格式常见操作示例
Jun 13 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
怎么理解wx.navigateTo的events参数使用详情
May 18 Javascript
如何在vue中使用HTML 5 拖放API
Jan 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下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
PHP7匿名类用法分析
2016/09/26 PHP
详解php中的implements 使用
2017/06/13 PHP
jquery获取选中的文本和值的方法
2014/07/08 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
js返回顶部实例分享
2016/12/21 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
vue实现验证码输入框组件
2017/12/14 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
解决vue-router 二级导航默认选中某一选项的问题
2019/11/01 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
如何通过Proxy实现JSBridge模块化封装
2020/10/22 Javascript
[06:35]2014DOTA2国际邀请赛 老男孩梦圆西雅图中国军团世界最强
2014/07/22 DOTA
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
python的unittest测试类代码实例
2017/12/07 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
python3.5安装python3-tk详解
2019/04/26 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
暑期培训班策划方案
2014/08/26 职场文书
初中班主任教育随笔
2015/08/15 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript