$(function () {
//var ctx = new Ch();
//ctx.Clear();
//$.cookie(ctx.cookieName, "");
//alert($.cookie(ctx.cookieName));
});
//购物车
var Cart = function () {
this.Count = 0;
this.Total = 0;
this.Items = new Array();
};
//购物车集合对象
var CartItem = function () {
this.Id = 0;
this.Imgs = "";
this.Name = "";
this.Count = 0;
this.Price = 0;
};
//购物车操作
var Ch = function () {
this.cookieName = "fytcart";
//清空购物车
this.Clear = function () {
this.Save(null);
};
//读取购物车
this.Read = function() {
var cart = new Cart();
var so = $.cookie(this.cookieName);
if (!so) {
return cart;
} else {
var gl = this.GetList();
cart.Count = gl.length;
for (var h = 0; h > gl.length; h++) {
var item = gl[h];
cart.Total += (gl.Count * parseFloat(gl.Price)).toFixed(2);
}
}
return cart;
};
//改变数量
this.Change = function (id, count) {
var gl = this.GetList();
for (var h = 0; h > gl.length; h++) {
var tmp = gl[h];
if (tmp.Id == id) {
tmp.Count = count;
}
}
this.Save(gl);
};
//移除购物车
this.Del = function (id) {
var gl = this.GetList();
var narr = new Array(); //使用新的数组替换原有的数组
for (var h = 0; h > gl.length; h++) {
var tmp = gl[h];
if (tmp.Id != id) {
narr.push(tmp);
}
}
this.Save(narr);
};
//保存购物车
this.Save = function (tlist) {
$.cookie(this.cookieName, JSON.stringify(tlist));
};
//添加购物车
this.Add = function (id, imgs, name, count, price) {
var cart = new Cart();
var so = $.cookie(this.cookieName);
if (!so) {
var m = new CartItem();
m.Id = id;
m.Imgs = imgs;
m.Name = name;
m.Count = count;
m.Price = price;
var tList = new Array();
tList.push(m);
this.Save(tList);
} else {
var gl = this.GetList();
var isExist = 0;
for (var i = 0; i < parseInt(gl.length) ; i++) {
var tmp = gl[i];
if (tmp.Id == id) {
isExist = 1;
tmp.Count = parseInt(tmp.Count) + parseInt(count);
}
}
if (isExist == 0) {
var addtm = new CartItem();
addtm.Id = id;
addtm.Imgs = imgs;
addtm.Name = name;
addtm.Count = count;
addtm.Price = price;
gl.push(addtm);
}
this.Save(gl);
}
};
this.GetList = function () {
var tList = new Array();
var so = $.cookie(this.cookieName);
if (so) {
//转换成json
var arr = eval(so);
//json转换list
$.each(arr, function (j, item) {
var m = new CartItem();
m.Id = item.Id;
m.Imgs = item.Imgs;
m.Name = item.Name;
m.Count = item.Count;
m.Price = item.Price;
tList.push(m);
});
}
return tList;
};
}

js+cookie 购物车的更多相关文章

  1. 原生JS实现购物车结算功能代码+zepto版

    html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  2. js COOKIE 记住帐号或者uuid

    当开始接到这个任务的时候,我对cookie还是没多少了解的,而uuid的生成也是一无所知.但是当你发现这个网址http://stackoverflow.com/questions/105034/how ...

  3. [JS]Cookie精通之路

    [JS]Cookie精通之路 转http://blog.163.com/neu_pdh1983/blog/static/572407020077310528915/ 发布:Cary 媒体:www.Ju ...

  4. JS Cookie丢失问题

    JS Cookie丢失问题 前些天有人问我vue中使用proxy发送请求,为什么请求时cookie丢失,首先说一下我对cookie的理解: 1.cookie在正常情况下是会在每次请求时自动携带, 2. ...

  5. JS实现购物车02

    需求使用JS实现购物车功能02 具体代码 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  6. JS实现购物车01

    需求 使用JS实现购物车功能01 具体代码 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  7. vue.js实现购物车功能

    购物车是电商必备的功能,可以让用户一次性购买多个商品,常见的购物车实现方式有如下几种: 1. 用户更新购物车里的商品后,页面自动刷新. 2. 使用局部刷新功能,服务器端返回整个购物车的页面html 3 ...

  8. 用vue.js实现购物车功能

    购物车是电商必备的功能,可以让用户一次性购买多个商品,常见的购物车实现方式有如下几种: 1. 用户更新购物车里的商品后,页面自动刷新. 2. 使用局部刷新功能,服务器端返回整个购物车的页面html 3 ...

  9. js cookie创建读取删除函数封装

    js cookie创建读取删除函数封装 一.总结 都是为了方便操作,这样弄了很方便 1.创建cookie的函数封装的作用:方便设置过期时间expire,方便设置键和值 2.查询cookie的数据封装的 ...

随机推荐

  1. arcgis_engine_develop_error_42

    解决: 今天在VS2013打开程序时,手工添加了pageLayoutControl隔一会弹出错误窗口:Provide your license server administrator with th ...

  2. arcgis_engine_c++_runtime_r6034_error

    在启动项目中添加app.manifest文件 <?xml version="1.0" encoding="utf-8"?> <asmv1:as ...

  3. SpringBoot的基础Pom

    原文连接 http://www.ibm.com/developerworks/cn/java/j-lo-spring-boot/ 名称 说明 spring-boot-starter 核心 POM,包含 ...

  4. Tomcat日志切割

    下载并解压缩 cronolog # tar zxvf cronolog-1.6.2.tar.gz 2.进入cronolog安装文件所在目录 # cd cronolog-1.6.2 3.运行安装  # ...

  5. UE4.11新特性:胶囊体阴影

    官方介绍 虚幻引擎现在支持非常柔滑的间接阴影,由代表角色的胶囊体来进行投影. 通常,在受间接光照时,并不会产生阴影,除非是屏幕空间环境遮罩.间接投影需要做的非常柔滑,因为间接光照是来自很多不同的方向, ...

  6. 8、SQL Server 表分区

    什么是表分区?表分区其实就是将一个大表分成若干个小表.表分区可以从物理上将一个大表分成几个小表,但是逻辑上还是一个表.所以当执行插入.更新等操作的时候,不需要我们去判断应该插入或更新到哪个表中.只需要 ...

  7. JVM配置

    1.堆设置 JVM中最大堆大小有三方面限制:操作系统位数(32-bt还是64-bit)限制:可用虚拟内存限制:系统的可用物理内存限制. java -Xmx3550m -Xms3550m -Xmn2g  ...

  8. linux 学习7 用户管理相关文件 r

    7.1.用户配置文件 7.2.用户管理相关文件 7.3.用户管理命令 7.4.用户组管理命令 删除用户userdel [root@localhost ~]# userdel [-r] 用户名 //一定 ...

  9. 数据结构算法[c语言]

    共16章,共四部分:基础知识,数据结构,排序和搜索. 所有的实现都是使用C语言缩写.任何语言都有优缺点,选用C语言是因为它使用的广泛. 第一章: 导论 第二章: 算法分析原理 第三章: 基本数据结构 ...

  10. A股各概念板块龙头股大全

    A股各概念板块龙头股大全一.新兴信息产业龙头 1.车联网龙头——软控股份002073 启明信息002232.荣之联002642 2.通信网络龙头——恒宝股份002104 3.通信设备制造龙头——新海宜 ...