html5购物车源代码本地存储,利用html5的本地存储写的一个购物车

本文介绍了如何使用JavaScript实现一个购物车功能,包括将商品信息以JSON格式存储在sessionStorage中,以及商品的增删和数量调整。通过JSON.stringify()和JSON.parse()进行数据转换,确保数据的轻量级传输。此外,文章讨论了本地存储的策略,如商品信息的合并与区分不同商店的商品。最后,提供了购物车加减功能的代码实现。
摘要由CSDN通过智能技术生成

好久没有写博客园了,很多知识没有记录下来;可惜;

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

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

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

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

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

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

fcecaa27ea5212ceb9bf034c36bfbf34.gif1 function addgood(id, price, name) {//在界面渲染的时候已经把商品信息参数整合到自己的函数中了

2 var contact = new Object();//单个商品的对象,暂时介质

3 var goodobj = new Object();//商品对象

4 var memberfilter = new Array();//商品信息

5 memberfilter[0] = "id";6 memberfilter[1] = "name";7 memberfilter[2] = "sum";8 memberfilter[3] = "price";9 if (typeof (sessionStorage.good) == "undefined") {//此时没有商品

10 contact.id =parseInt(id);11 contact.name =name;12 contact.sum = 1;13 contact.price =parseInt(price);14 var good = newArray();15 var jsonText =JSON.stringify(contact, memberfilter);16 good[0] =JSON.parse(jsonText);17 sessionStorage.good =JSON.stringify(good, memberfilter);18

19 }20 else {//有商品,要判断商品在本地是否有存储,有的话sum+1

21 //取数据

22 goodobj =JSON.parse(sessionStorage.good);23 var con = 0;24 for (var i = 0; i < goodobj.length; i++) {25 if (goodobj[i].id ==id) {26 goodobj[i].sum = 1 +parseInt(goodobj[i].sum);27 sessionStorage.good=JSON.stringify(goodobj, memberfilter);28 con++;29 break;30 }31 }32 if (con == 0) {//没有该商品,新建一个进去

33 contact.id =parseInt(id);34 contact.name =name;35 contact.sum = 1;36 contact.price =parseInt(price);37

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

43 }44

45 }46 }

fcecaa27ea5212ceb9bf034c36bfbf34.gif

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

115cb13ed947155ad438816fa15bc360.png

****************************************************************************************************************

***购物车还有加减功能,附上最基本的功能:

购物车页面是另外的,这里重新定义;

fcecaa27ea5212ceb9bf034c36bfbf34.gif1 var goodobj = newObject();2 var money = 0;3 var memberfilter = newArray();4 memberfilter[0] = "id";5 memberfilter[1] = "name";6 memberfilter[2] = "sum";7 memberfilter[3] = "price";

fcecaa27ea5212ceb9bf034c36bfbf34.gif

1、商品数量加一:

fcecaa27ea5212ceb9bf034c36bfbf34.gif1 function add(id) {//此方法是带商品id的

2 for (var i = 0; i < goodobj.length; i++) {//简单的遍历,没有优化

3 if (goodobj[i].id ==id) {4 goodobj[i].sum = 1 +parseInt(goodobj[i].sum);5 sessionStorage.good=JSON.stringify(goodobj, memberfilter);6 money = parseInt(money) + parseInt(goodobj[i].price);//总价

7 break;8 }9 }10 };

fcecaa27ea5212ceb9bf034c36bfbf34.gif

2、商品数量减一:

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 functioncut(id) {2 for (var i = 0; i < goodobj.length; i++) {3 if (goodobj[i].id ==id) {4 goodobj[i].sum = parseInt(goodobj[i].sum) - 1;5 money = parseInt(money) -parseInt(goodobj[i].price);6 if (goodobj[i].sum == 0) {7 goodobj = goodobj.del(i);//删除此商品

8 }9 sessionStorage.good=JSON.stringify(goodobj, memberfilter);10 break;11 }12 }13 };View Code

3、删除商品的时候,也就是对对象数组进行操作,那么删除一个对象,就要刷新一次索引,不然某array[i]可能就是undefined;这个时候就会造成json错误;

删除商品使用的函数使用了slice()和concat();

w3school中解释:

slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分;

concat() 方法用于连接两个或多个数组,该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

prototype 属性使您有能力向对象添加属性和方法。

如下是代码:

2b65ef29a5872cc0e4771c25889edd04.gif

6a087676c59fa8b19d76e6bb55a32902.gif

1 Array.prototype.del = function(n) {2 if (n < 0)3 return this;4 else

5 return this.slice(0, n).concat(this.slice(n + 1, this.length));6 }//本代码有参考网上的代码,出处不记得了,真是不好意思View Code

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

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

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

原文:http://www.cnblogs.com/liwon/p/3728591.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值