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 相关文章推荐
通过Mootools 1.2来操纵HTML DOM元素
Sep 15 Javascript
在js文件中如何获取basePath处理js路径问题
Jul 10 Javascript
jQuery 无限级菜单的简单实例
Feb 21 Javascript
IE6 hack for js 集锦
Sep 23 Javascript
JavaScript实现多种排序算法
Feb 24 Javascript
javascript正则表达式中分组详解
Jul 17 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
Nov 10 Javascript
AngularJs+Bootstrap实现漂亮的计算器
Aug 10 Javascript
微信小程序引用公共js里的方法的实例详解
Aug 17 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
javascript 高级语法之继承的基本使用方法示例
Nov 11 Javascript
js利用iframe实现选项卡效果
Aug 09 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 图片上添加透明度渐变的效果
2009/06/29 PHP
解析PayPal支付接口的PHP开发方式
2010/11/28 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
python网络编程学习笔记(四):域名系统
2014/06/09 Python
Python判断操作系统类型代码分享
2014/11/22 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
谈谈python中GUI的选择
2018/03/01 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python matplotlib折线图样式实现过程
2019/11/04 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
揭牌仪式策划方案
2014/05/28 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
检讨书格式
2015/05/07 职场文书
大学军训口号大全
2015/12/24 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android