$(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. YCSB测试Mysql,MongoDB,TokuMX,Couchbase性能

    测试是由同事完成的,这里只做收藏. 测试说明: 1.数据量为3kw记录,每条记录11个字段,一个为主键,主键为字符类型,类似:user****,后续为数值 其他10字段为字符类型,100字符,记录长度 ...

  2. 为 Linux 应用程序编写 DLL[转]

    自:http://www.ibm.com/developerworks/cn/linux/sdk/dll/index.html 在仅仅只会编写插件的时候为什么要编写整个应用程序? 插件和 DLL 通常 ...

  3. C# 生成表格代碼

    public ActionResult btnExport(ReportViewModel model)         {             //接收需要导出的数据             L ...

  4. Set,List,Map,Vector,ArrayList的区别(转)

    JAVA的容器---List,Map,Set Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtab ...

  5. Kafka报错-as it has seen zxid 0x83808 our last zxid is 0x0 client must try another server

    as it has seen zxid 0x83808 our last zxid is 0x0 client must try another server 停止zookeeper,删除datadi ...

  6. OpenSSL主配置文件openssl.cnf

    虽说配置文件很多设置不用修改就能直接使用,但是了解它是配置openssl相关事项所必须的.而且要实现复杂多功能,必然要对配置相关了然于心. 1.man config 该帮助文档说明了openssl.c ...

  7. JavaScript的eval函数

    eval() 函数可将字符串转换为代码执行,并返回一个或多个值 函数原型为: 返回值 = eval( codeString ) 函数说明: 如果eval函数在执行时遇到错误,则抛出异常给调用者. 类似 ...

  8. VC++ 简单的打印功能(对话框模式下)

    不多说,直接上代码 void CParamDlg::OnBnClickedButton6() { // TODO: 在此添加控件通知处理程序代码 CDC dc; CPrintDialog dlg(TR ...

  9. Native wifi API使用

    写于博客园,自己迁过来: 一.WlanOpenHandle打开一个客户端句柄 DWORD WINAPI WlanOpenHandle( __in DWORD dwClientVersion, __re ...

  10. 用Java写算法之归并排序

    转自:http://flyingcat2013.blog.51cto.com/7061638/1281026 前面的三种排序算法(冒泡排序,选择排序,插入排序)在平均情况下均为O(n^2)复杂度,在处 ...