本文实例讲述了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程序设计有所帮助。