说明:cookie的操作须有域名,简单点说就是需要用发布的方式去访问,查看cookie信息请用开发者模式进入application栏

1.页面布局(结构)(根目录)

商品列表

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>商品列表</title>
  6. <link rel="stylesheet" type="text/css" href="styles/productList.css"/>
  7. </head>
  8. <body>
  9. <div class="listbox">
  10. <a href="shoppingCart.html" class="mycart">我的购物车</a>
  11. <ul id="list" class="list">
  12. <li>
  13. <a href="javascript:;" class="abtn" data-id="" data-url="images/1.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
  14. <img src="data:images/1.jpg" alt="">
  15. <div class="title">8h 鹅绒被</div>
  16. <div class="price"></div>
  17. </li>
  18. <li>
  19. <a href="javascript:;" class="abtn" data-id="" data-url="images/2.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
  20. <img src="data:images/2.jpg" alt="">
  21. <div class="title">8h 鹅绒被</div>
  22. <div class="price"></div>
  23. </li>
  24. <li>
  25. <a href="javascript:;" class="abtn" data-id="" data-url="images/3.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
  26. <img src="data:images/3.jpg" alt="">
  27. <div class="title">8h 鹅绒被</div>
  28. <div class="price"></div>
  29. </li>
  30. <li>
  31. <a href="javascript:;" class="abtn" data-id="" data-url="images/4.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
  32. <img src="data:images/4.jpg" alt="">
  33. <div class="title">8h 鹅绒被</div>
  34. <div class="price"></div>
  35. </li>
  36. <li>
  37. <a href="javascript:;" class="abtn" data-id="" data-url="images/5.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
  38. <img src="data:images/5.jpg" alt="">
  39. <div class="title">8h 鹅绒被</div>
  40. <div class="price"></div>
  41. </li>
  42. <li>
  43. <a href="javascript:;" class="abtn" data-id="" data-url="images/6.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
  44. <img src="data:images/6.jpg" alt="">
  45. <div class="title">8h 鹅绒被</div>
  46. <div class="price"></div>
  47. </li>
  48. <li>
  49. <a href="javascript:;" class="abtn" data-id="" data-url="images/7.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
  50. <img src="data:images/7.jpg" alt="">
  51. <div class="title">8h 鹅绒被</div>
  52. <div class="price"></div>
  53. </li>
  54. <li>
  55. <a href="javascript:;" class="abtn" data-id="" data-url="images/8.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
  56. <img src="data:images/8.jpg" alt="">
  57. <div class="title">8h 鹅绒被</div>
  58. <div class="price"></div>
  59. </li>
  60. </ul>
  61. </div>
  62. </body>
  63. <script type="text/javascript" src="scripts/common.js"></script>
  64. <script type="text/javascript" src="scripts/productList.js"></script>
  65. </html>

productList.html

购物车商品页面

  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>商品列表</title>
  6. <link rel="stylesheet" type="text/css" href="styles/productList.css"/>
  7. </head>
  8. <body>
  9. <div class="listbox">
  10. <a href="productList.html" class="mycart">返回商品列表</a>
  11. <ul id="list" class="list">
  12. </ul>
  13. </div>
  14. </body>
  15. <script type="text/javascript" src="scripts/common.js"></script>
  16. <script type="text/javascript" src="scripts/shoppingCart.js"></script>
  17. </html>

shoppingCart.html

2.页面样式(样式)(文件夹名称:styles)

  1. @charset "ntf-8";
  2. /* css document */
  3. /* 样式覆盖 */
  4. html,body,form,table,th,tr,td,ul,li,ol,dl,dd,dt,p,h1,h2,h3,h4,h5,h6,fieldset,figure,hr,div{
  5. margin: ;
  6. padding: ;
  7. }
  8. html,body{
  9. height: %;
  10. }
  11. body{
  12. font-family: "Microsoft YaHei","Arial";
  13. font-size: 16px;
  14. background: #f3f3f3;
  15. }
  16.  
  17. ul,ol{
  18. list-style: none;
  19. }
  20.  
  21. img{
  22. border: none;
  23. display: block;
  24. }
  25.  
  26. a{
  27. text-decoration: none;
  28. }
  29. /* listbox */
  30. .listbox{
  31. width: %;
  32. margin: auto;
  33. overflow:hidden;
  34. text-align: center;
  35. }
  36. .mycart{
  37. display: inline-block;
  38. padding: 10px 50px;
  39. border: 10px solid #f3f3f3;
  40. font-weight: bold;
  41. font-size: 18px;
  42. color: #;
  43. background: #e33333;
  44. }
  45. .list li{
  46. width: %;
  47. background: #ffffff;
  48. float: left;
  49. min-height: 100px;
  50. _height:100px;
  51. box-sizing: border-box;
  52. border: 10px solid #f3f3f3;
  53. text-align: center;
  54. border-radius: 10px;
  55. }
  56. .list li img{
  57. width: %;
  58. }
  59. .list li .abtn{
  60. width: %;
  61. height: 50px;
  62. display: inline-block;
  63. background: #e33333;
  64. font-weight: bold;
  65. line-height: 50px;
  66. text-decoration: none;
  67. color:#;
  68. cursor: pointer;
  69. letter-spacing: 8px;
  70. }
  71. .list li .title{
  72. line-height: 40px;
  73.  
  74. }
  75. .list li .price{
  76. line-height: 40px;
  77. color: #e33333;
  78. font-size: 18px;
  79. }

productList.css

3.脚本文件(行为)(文件夹名称:scripts)

封装函数及公用的方法

  1. /*封装的公用函数—开始*/
  2. function $(id) {
  3. return document.getElementById(id);
  4. }
  5. function getTagByClassName(sClassName) {
  6. if (document.getElementsByClassName) {
  7. return document.getElementsByClassName(sClassName);
  8. }
  9. else
  10. {
  11. var allTags=document.getElementsByTagName("*");
  12. var tag=[];
  13. for (var i = ; i < allTag.length; i++) {
  14. if (allTags[i].className==sClassName) {
  15. tag.push(allTags[i]);
  16. }
  17. }
  18. return tag;
  19. }
  20. }
  21. /*封装的公用函数—完毕*/
  22.  
  23. //增加或修改cookie
  24. function setCookie(name,value,days,path){
  25. days=days||;
  26. path=path||'/';
  27. var oDate=new Date();
  28. oDate.setDate(oDate.getDate()+days);
  29. document.cookie = name + '=' + encodeURIComponent(value) + ';expires=' + oDate +';path=' + path;
  30. }
  31. // 获取cookie
  32. function getCookie(name) {
  33. var aCookie = document.cookie.split('; ');
  34. for(var i = ; i < aCookie.length; i++) {
  35. var temp = aCookie[i].split('=');
  36.  
  37. if(temp[] === name) {
  38. return decodeURIComponent(temp[]);
  39. }
  40. }
  41. }

common.js

关于商品列表的脚本

  1. /*网页加载完成后执行的事件*/
  2. window.onload=function() {
  3. var oAbtn=getTagByClassName("abtn");
  4. for (var i = ; i < oAbtn.length; i++) {
  5. oAbtn[i].onclick=function() {
  6. var goodId=this.getAttribute('data-id');
  7. var goodSrc=this.getAttribute('data-url');
  8. var goodTitle=this.getAttribute('data-title');
  9. var goodPrice=this.getAttribute('data-price');
  10. var goodAmount=this.getAttribute('data-amount');
  11. //创建货物对象并赋值
  12. var oGood={
  13. id:goodId,
  14. src:goodSrc,
  15. title:goodTitle,
  16. price:goodPrice,
  17. amount:goodAmount
  18. };
  19. //读取内存中的cookie信息
  20. var sGoodlist=getCookie("aGoodList")
  21. //获取货物数组,如果货物数组存在则在此基础上进行修改数据,不存在则创建新的数组存储货物对象
  22. var aGoodList=sGoodlist?JSON.parse(sGoodlist):[];
  23. //判断是否存在将要添加到购物车的货物
  24. var whetherExsits=aGoodList.every(function(v) {
  25. if (v.id===oGood.id) {
  26. //存在修改购物车的货物数量
  27. v.amount++;
  28. return false;
  29. }
  30. return true;
  31. });
  32. //不存在则将货物对象追加到数组
  33. if (whetherExsits) {
  34. aGoodList.push(oGood);
  35. }
  36. setCookie("aGoodList",JSON.stringify(aGoodList),);
  37. }
  38. }
  39. }

productList.js

关于购物车的脚本

  1. window.onload=function() {
  2.  
  3. var sGoodlist=getCookie("aGoodList");
  4. var aGoodList=sGoodlist?JSON.parse(sGoodlist):[];
  5. for (var i = ; i < aGoodList.length; i++) {
  6. var oLi=document.createElement('li');
  7. oLi.innerHTML='<a href="javascript:;" class="abtn" data-id="'+aGoodList[i].id+'">删除该商品</a><img src="'+aGoodList[i].src+'" /><div class="title">'+aGoodList[i].title+'</div><div class="price">¥'+aGoodList[i].price+'/个|数量'+aGoodList[i].amount+'</div>';
  8. $("list").appendChild(oLi);
  9. var oAbtn=getTagByClassName("abtn");
  10. oAbtn[i].index=i;
  11. oAbtn[i].onclick=function() {
  12. //商品数量没删除一次减一件
  13. if (aGoodList[this.index].amount>) {
  14. aGoodList[this.index].amount--
  15. }
  16. else
  17. {
  18. //剩余一件商品删除该对象
  19. $("list").removeChild(this.parentNode);
  20. aGoodList.splice(this.index,)//掌握splice的应用
  21. }
  22. //将最新商品保存到cookie
  23. setCookie("aGoodList",JSON.stringify(aGoodList),);
  24. window.location.reload();
  25. }
  26. }
  27. }

shoppingCart.js

4.图片资源(上方为图片名称)(文件夹名称:images)

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

Demo—cookie电商购物车的更多相关文章

  1. Laravel 获取当前 Guard 分析 —源自电商购物车的实际需求

    iBrand 产品中关于购物车的需求比较复杂,我们基于 overture/laravel-shopping-cart 扩展出了更加符合电商需求的购物车包,之前有文章进行过简单的介绍: Laravel ...

  2. 【Redis】Hash常见应用场景 - 电商购物车

    电商购物车 以用户id为key 商品id为field 商品数量为value 购物车操作 [key(用户id),field(商品id),value(数量)] 添加商品 -> hset cart: ...

  3. 走进Vue时代进阶篇(01):重构电商购物车模块

    前言 从这篇文章开始,我准备给大家分享一些关于Vue.js这门框架的技巧性系列文章,正好我们公司项目中也用到了Vue.所以,教是最好的学.进阶篇比较适合于二三线城市,还在小厂打拼的童鞋们.欢迎你们跟着 ...

  4. iOS 电商购物车倒计时时间计算

    /** * 倒计时 * * @param endTime 截止的时间戳 * * @return 返回的剩余时间 */ - (NSString*)remainingTimeMethodAction:(l ...

  5. 使用“消息服务框架”(MSF)实现分布式事务的三阶段提交协议(电商创建订单的示例)

    1,示例解决方案介绍 在上一篇 <消息服务框架(MSF)应用实例之分布式事务三阶段提交协议的实现>中,我们分析了分布式事务的三阶段提交协议的原理,现在我们来看看如何使用消息服务框架(MSF ...

  6. 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车

     阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...

  7. 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文

    阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...

  8. Java开源生鲜电商平台-购物车模块的设计与架构(源码可下载)

    ava开源生鲜电商平台-购物车模块的设计与架构(源码可下载) 说明:任何一个电商无论是B2C还是B2B都有一个购物车模块,其中最重要的原因就是客户需要的东西放在一起,形成一个购物清单,确认是否有问题, ...

  9. Cookie防伪造防修改 电商课题:cookie防篡改

    主要防止非法用户修改cookie信息,以及cookie的超时时间 传统cookie存储,Cookie(name, value),value很容易就被篡改. 防修改cookie存储,Cookie(nam ...

随机推荐

  1. idea 破解代码

    下面是idea的破解方法,手动执行对应的main方法即可.亲测Idea 14 完美破解~~废话少说,上代码... package com.jd.serializable; import java.ma ...

  2. oracle用户解锁

    创建一个概要文件 create profile frank_profile limit    SESSIONS_PER_USER  5    IDLE_TIME  2    FAILED_LOGIN_ ...

  3. 硬盘IOPS与读写速度

    IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一.IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求 ...

  4. python‘s second day for me

    in     not in 主要用来检测一些字符串是否存在,或者避免一些字符串 while True: comment = input('请输入你的评论') if '顾清秋' in comment: ...

  5. C++模板类练习题

    题目说明: 编写一个程序,使用类模板对数组元素进行排序,倒置.查找和求和 具有对数组元素进行排序,倒置.查找和求和功能, 然后产生类型实参分别为int型和double型的两个模板类, 分别对整型数组与 ...

  6. ansible自动化运维工具使用详解

    一. ansible 简介 1. ansible ansible是新出现的 自动化 运维工具 , 基于Python研发 . 糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行 ...

  7. MySQL查看用户权限的两种方法

    http://yanue.net/post-96.html MySQL查看用户权限命令的两方法: 一. 使用MySQL grants MySQL grant详细用法见:http://yanue.net ...

  8. HALCON形状匹配(转)

    LIntExport Herror create_shape_model( const Hobject&  Template ,  //reduce_domain后的模板图像 Hlong  N ...

  9. UNITY IMGUI

    这几天研究OPENGL时,想找一个UI库来用,发现了IMGUI,到网上搜索评估中,突然发现它似乎和UNITY有关系. UNITY文档中提到过IMGUI,不知道是不一个东西,仔细看了下文档,果然是.原文 ...

  10. elasticsearch中的mapping简介

    默认mapping elasticsearch(以下简称ES)是没有模式(schema)的,当我们执行以下命令: curl -d '{"name":"zach" ...