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修改css样式style
Apr 15 Javascript
js DOM的学习笔记
Dec 22 Javascript
js操作输入框提示信息且响应鼠标事件
Mar 25 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
Mar 01 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
Jun 10 Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 Javascript
探讨跨域请求资源的几种方式(总结)
Dec 02 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
Dec 05 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
Jan 11 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
Jul 24 Javascript
详解React 的几种条件渲染以及选择
Oct 23 Javascript
微信小程序实现提交input信息到后台的方法示例
Jan 19 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/07/30 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
你可能不知道的前端算法之文字避让(inMap)
2018/01/12 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
python http接口自动化脚本详解
2018/01/02 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
详解Python装饰器
2019/03/25 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
傲盾软件面试题
2015/08/17 面试题
举例说明类变量和实例变量的区别
2016/06/30 面试题
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
后进生评语大全
2015/01/04 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
html5调用摄像头实例代码
2021/06/28 HTML / CSS
零基础学java之循环语句的使用
2022/04/10 Java/Android
git中cherry-pick命令的使用教程
2022/06/25 Servers