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 相关文章推荐
使用SyntaxHighlighter实现HTML高亮显示代码的方法
Feb 04 Javascript
Jquery 滑入滑出效果实现代码
Mar 27 Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 Javascript
jQuery实现hover合成事件的方法
Aug 06 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
May 27 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
Feb 13 Javascript
原生JS实现图片翻书效果
Feb 16 Javascript
Vue实现动态显示textarea剩余字数
May 22 Javascript
详解Node.js 命令行程序开发教程
Jun 07 Javascript
纯js实现隔行变色效果
Nov 29 Javascript
jQuery实现页码跳转式动态数据分页
Dec 31 jQuery
在vue 中使用 less的教程详解
Sep 26 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 session应用实例 登录验证
2009/03/16 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
2014/12/19 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
thinkphp3.2.3 分页代码分享
2016/07/28 PHP
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
Python读写/追加excel文件Demo分享
2018/05/03 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
美国创意之家:BulbHead
2017/07/12 全球购物
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
交通安全教育制度
2014/02/02 职场文书
食品安全检查制度
2014/02/03 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
求职自我推荐信
2015/03/24 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技