基于html5 localStorage的购物车JS脚本

http://blog.csdn.net/wangqiuyun/article/details/8435649

最近在做html5这一块,参考网上的代码写了一个购物车JS脚本,很简单,直接上代码,shoppingCart.js:

[javascript] view plain copy

  1. utils = {
  2. setParam : function (name,value){
  3. localStorage.setItem(name,value)
  4. },
  5. getParam : function(name){
  6. return localStorage.getItem(name)
  7. }
  8. }
  9. product={
  10. id:0,
  11. name:"",
  12. num:0,
  13. price:0.00,
  14. };
  15. orderdetail={
  16. username:"",
  17. phone:"",
  18. address:"",
  19. zipcode:"",
  20. totalNumber:0,
  21. totalAmount:0.00
  22. }
  23. cart = {
  24. //向购物车中添加商品
  25. addproduct:function(product){
  26. var ShoppingCart = utils.getParam("ShoppingCart");
  27. if(ShoppingCart==null||ShoppingCart==""){
  28. //第一次加入商品
  29. var jsonstr = {"productlist":[{"id":product.id,"name":product.name,"num":product.num,"price":product.price}],"totalNumber":product.num,"totalAmount":(product.price*product.num)};
  30. utils.setParam("ShoppingCart","‘"+JSON.stringify(jsonstr));
  31. }else{
  32. var jsonstr = JSON.parse(ShoppingCart.substr(1,ShoppingCart.length));
  33. var productlist = jsonstr.productlist;
  34. var result=false;
  35. //查找购物车中是否有该商品
  36. for(var i in productlist){
  37. if(productlist[i].id==product.id){
  38. productlist[i].num=parseInt(productlist[i].num)+parseInt(product.num);
  39. result = true;
  40. }
  41. }
  42. if(!result){
  43. //没有该商品就直接加进去
  44. productlist.push({"id":product.id,"name":product.name,"num":product.num,"price":product.price});
  45. }
  46. //重新计算总价
  47. jsonstr.totalNumber=parseInt(jsonstr.totalNumber)+parseInt(product.num);
  48. jsonstr.totalAmount=parseFloat(jsonstr.totalAmount)+(parseInt(product.num)*parseFloat(product.price));
  49. orderdetail.totalNumber = jsonstr.totalNumber;
  50. orderdetail.totalAmount = jsonstr.totalAmount;
  51. //保存购物车
  52. utils.setParam("ShoppingCart","‘"+JSON.stringify(jsonstr));
  53. }
  54. },
  55. //修改给买商品数量
  56. updateproductnum:function(id,num){
  57. var ShoppingCart = utils.getParam("ShoppingCart");
  58. var jsonstr = JSON.parse(ShoppingCart.substr(1,ShoppingCart.length));
  59. var productlist = jsonstr.productlist;
  60. for(var i in productlist){
  61. if(productlist[i].id==id){
  62. jsonstr.totalNumber=parseInt(jsonstr.totalNumber)+(parseInt(num)-parseInt(productlist[i].num));
  63. jsonstr.totalAmount=parseFloat(jsonstr.totalAmount)+((parseInt(num)*parseFloat(productlist[i].price))-parseInt(productlist[i].num)*parseFloat(productlist[i].price));
  64. productlist[i].num=parseInt(num);
  65. orderdetail.totalNumber = jsonstr.totalNumber;
  66. orderdetail.totalAmount = jsonstr.totalAmount;
  67. utils.setParam("ShoppingCart","‘"+JSON.stringify(jsonstr));
  68. return;
  69. }
  70. }
  71. },
  72. //获取购物车中的所有商品
  73. getproductlist:function(){
  74. var ShoppingCart = utils.getParam("ShoppingCart");
  75. var jsonstr = JSON.parse(ShoppingCart.substr(1,ShoppingCart.length));
  76. var productlist = jsonstr.productlist;
  77. orderdetail.totalNumber = jsonstr.totalNumber;
  78. orderdetail.totalAmount = jsonstr.totalAmount;
  79. return productlist;
  80. },
  81. //判断购物车中是否存在商品
  82. existproduct:function(id){
  83. var ShoppingCart = utils.getParam("ShoppingCart");
  84. var jsonstr = JSON.parse(ShoppingCart.substr(1,ShoppingCart.length));
  85. var productlist = jsonstr.productlist;
  86. var result=false;
  87. for(var i in productlist){
  88. if(productlist[i].id==product.id){
  89. result = true;
  90. }
  91. }
  92. return result;
  93. },
  94. //删除购物车中商品
  95. deleteproduct:function(id){
  96. var ShoppingCart = utils.getParam("ShoppingCart");
  97. var jsonstr = JSON.parse(ShoppingCart.substr(1,ShoppingCart.length));
  98. var productlist = jsonstr.productlist;
  99. var list=[];
  100. for(var i in productlist){
  101. if(productlist[i].id==id){
  102. jsonstr.totalNumber=parseInt(jsonstr.totalNumber)-parseInt(productlist[i].num);
  103. jsonstr.totalAmount=parseFloat(jsonstr.totalAmount)-parseInt(productlist[i].num)*parseFloat(productlist[i].price);
  104. }else{
  105. list.push(productlist[i]);
  106. }
  107. }
  108. jsonstr.productlist = list;
  109. orderdetail.totalNumber = jsonstr.totalNumber;
  110. orderdetail.totalAmount = jsonstr.totalAmount;
  111. utils.setParam("ShoppingCart","‘"+JSON.stringify(jsonstr));
  112. }
  113. };

使用也很简单:

[javascript] view plain copy

    1. var product =
    2. {
    3. ‘id‘: id,        //属性名用引号括起来,属性间由逗号隔开
    4. ‘name‘: ‘hhh‘,
    5. ‘num‘:jq(‘#text-4‘).val(),
    6. ‘price‘:199.9
    7. };
    8. //商品加入到购物车
    9. cart.addproduct(product);
    10. var productlist=cart.getproductlist();//取出购物车商品
    11. alert(‘‘, ‘商品:‘+productlist[0].id+‘ ‘+productlist[0].name+‘ ‘+productlist[0].num+‘ ‘+productlist[0].price, ‘确定‘);
时间: 2024-12-28 20:22:18

基于html5 localStorage的购物车JS脚本的相关文章

localStorage存值取值以及存取JSON,以及基于html5 localStorage的购物车

http://blog.csdn.net/u013267266/article/details/51530611 localStorage.setItem("key","value");//存储变量名为key,值为value的变量 localStorage.key = "value"//存储变量名为key,值为value的变量 localStorage.getItem("key");//获取存储的变量key的值www.it16

Smarge——基于HTML5 localStorage的key-value缓存框架

缓存是任何一个Web程序都需要重视的内容.受到Redis的启发,我想到开发一个基于HTML5 localStorage的key-value缓存框架,做了一些尝试之后,便有了Smarge这样一个产物. 大家都知道,HTML5的localStorage没有超时的机制,也不能存储数组和对象等类型,更没有命令空间等思想. 这些问题,在Smarge中都得到了解决. 项目地址:https://git.oschina.net/jiusem/Smarge.git 说明:Smarge1.0.js是完整的源代码,以

基于html5 localStorage , web SQL, websocket的简单聊天程序

new function() { var ws = null; var connected = false; var serverUrl; var connectionStatus; var sendMessage; var connectButton; var disconnectButton; var sendButton; var open = function() { var url = serverUrl.val(); ws = new WebSocket(url); ws.onope

基于HTML5 SVG和Raphaël.js的混合图标动画特效插件教程

一.安装$ npm install hybicon$ bower install hybicon 二.使用方法<script src="js/required/raphael.min.js"></script><script src="js/hybicon.min.js"></script> 三.Html结构<div data-hybicon="icon1-icon2"></div

基于jQuery HTML5添加到购物车代码

基于jQuery HTML5添加到购物车代码.这是一款支持选择颜色跟样式的添加购物车代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <header> <h1>Quick Add to Cart</h1> </header> <a href="#0" class="cd-cart"> <span>0</span> </a> <ul class

基于HTML5的PACS--HTML5图像处理(7)实现客户端JS调整窗宽窗位

仅提供参考和学习,代码仅为了指明个思路,转载请注明出处. 要查看此系统更多的图像处理功能请参考: 区域医疗移动医疗影像解决方案--基于HTML5的PACS--HTML5图像处理 在此之前,此系统是结合DICOM的WADO标准,在浏览器里通过javascript操作返回的JPG图片.这种服务器端解析,客户端展现的方式,对实现图像的移动.缩放.旋转.测量等图像操作能够实现实时的交互.但这种方式存在着几个弊端: 1.获取图像上的CT值(钙化值)信息的时候,要频繁的和服务器进行交互. 2.调整图像的窗宽

HTML5 Localstorage JS

/* HTML5 SessionStorage */ //添加数据 function SSsetVal(key, val){ if(window.sessionStorage){ //检测用户是否输入键 if(key=='' || val==''){ return 0; } sessionStorage.setItem(key,val); alert('数据:'+key+'->'+val+'添加成功'); return 1; }else{ alert('不支持本地存储'); return 0;

基于html5 canvas和js实现的水果忍者网页版

今天爱编程小编给大家分享一款基于html5 canvas和js实现的水果忍者网页版. <水果忍者>是一款非常受喜欢的手机游戏,刚看到新闻说<水果忍者>四周年新版要上线了.网页版的切水果游戏由百度 JS 小组开发,采用 vml + svg 绘图,使用了 Raphael,效果很赞,赶紧来膜拜一下.效果图如下: 在线预览   源码下载 实现的代码. html代码: <canvas id="view" width="640" height=&q

基于HTML5 Bootstrap搭建的后台模板,分页,模糊查询已经全部JS实现,无需编码,嵌入数据即可开发,内置8款皮肤,欧美风格,非常好用!

原文:基于HTML5 Bootstrap搭建的后台模板,分页,模糊查询已经全部JS实现,无需编码,嵌入数据即可开发,内置8款皮肤,欧美风格,非常好用! 源代码下载地址:http://www.zuidaima.com/share/1550463575788544.htm 分页,查询功能已经全部用JS实现,无需再做此类代码编写,嵌入数据即可,真心美观好用.