您的位置:首页 > Web前端 > HTML5

利用html5的本地存储写的一个购物车

2014-05-14 20:28 239 查看
好久没有写博客园了,很多知识没有记录下来;可惜;

这几天在开发微信,也写了一个订餐平台的微网站,里面需要写一个购物车;

这里主要是把商品的部分信息以json格式保存在sessionstorage中,还有商店信息也是;

以json格式保存有什么好处呢,轻量级的传输,大概是这样吧!另外,如果我们把商品信息分开存储,就会导致有多条的sessionstorage项,那以后实现在两家商店同时购物的话,就不可能区分每家商店的商品了;

如果代码是自己写的,就有版权,这么说、对吧,是在软件工程师书上看到的;

不多说,我喜欢的是上代码;

在点击商品的时候,我们就把商品加入购物车,这个功能:其中利用了JSON.stringfy()和JSON.parse()进行转换

function addgood(id, price, name) {//在界面渲染的时候已经把商品信息参数整合到自己的函数中了
var contact = new Object();//单个商品的对象,暂时介质
var goodobj = new Object();//商品对象
var memberfilter = new Array();//商品信息
memberfilter[0] = "id";
memberfilter[1] = "name";
memberfilter[2] = "sum";
memberfilter[3] = "price";
if (typeof (sessionStorage.good) == "undefined") {//此时没有商品
contact.id = parseInt(id);
contact.name = name;
contact.sum = 1;
contact.price = parseInt(price);
var good = new Array();
var jsonText = JSON.stringify(contact, memberfilter);
good[0] = JSON.parse(jsonText);
sessionStorage.good = JSON.stringify(good, memberfilter);

}
else {//有商品,要判断商品在本地是否有存储,有的话sum+1
//取数据
goodobj = JSON.parse(sessionStorage.good);
var con = 0;
for (var i = 0; i < goodobj.length; i++) {
if (goodobj[i].id == id) {
goodobj[i].sum = 1 + parseInt(goodobj[i].sum);
sessionStorage.good= JSON.stringify(goodobj, memberfilter);
con++;
break;
}
}
if (con == 0) {//没有该商品,新建一个进去
contact.id = parseInt(id);
contact.name = name;
contact.sum = 1;
contact.price = parseInt(price);

var jsonText = JSON.stringify(contact, memberfilter);
var goolen = goodobj.length;
goodobj[goolen] = JSON.parse(jsonText);
sessionStorage.good= JSON.stringify(goodobj, memberfilter);

}

}
}


这是本地存储的数据格式:

  

Array.prototype.del = function (n) {
if (n < 0)
return this;
else
return this.slice(0, n).concat(this.slice(n + 1, this.length));
}//本代码有参考网上的代码,出处不记得了,真是不好意思


View Code

最后也想解释一下为什么用这个格式的json,我用ajax技术把数据传送到后端,定义了一个函数解析这个格式的json,中间利用一个类暂时存储其中的信息,最终转换为dataset,这样数据就可以方便使用了

我希望看到这篇文章的伙伴们都可以留下您宝贵的意见,我希望加以改进函数!!谢谢交流

最近在开发微信,我也希望有人交流

作者:威华
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: