Demo—cookie电商购物车
说明:cookie的操作须有域名,简单点说就是需要用发布的方式去访问,查看cookie信息请用开发者模式进入application栏
1.页面布局(结构)(根目录)
商品列表
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>商品列表</title>
- <link rel="stylesheet" type="text/css" href="styles/productList.css"/>
- </head>
- <body>
- <div class="listbox">
- <a href="shoppingCart.html" class="mycart">我的购物车</a>
- <ul id="list" class="list">
- <li>
- <a href="javascript:;" class="abtn" data-id="" data-url="images/1.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
- <img src="data:images/1.jpg" alt="">
- <div class="title">8h 鹅绒被</div>
- <div class="price">¥</div>
- </li>
- <li>
- <a href="javascript:;" class="abtn" data-id="" data-url="images/2.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
- <img src="data:images/2.jpg" alt="">
- <div class="title">8h 鹅绒被</div>
- <div class="price">¥</div>
- </li>
- <li>
- <a href="javascript:;" class="abtn" data-id="" data-url="images/3.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
- <img src="data:images/3.jpg" alt="">
- <div class="title">8h 鹅绒被</div>
- <div class="price">¥</div>
- </li>
- <li>
- <a href="javascript:;" class="abtn" data-id="" data-url="images/4.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
- <img src="data:images/4.jpg" alt="">
- <div class="title">8h 鹅绒被</div>
- <div class="price">¥</div>
- </li>
- <li>
- <a href="javascript:;" class="abtn" data-id="" data-url="images/5.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
- <img src="data:images/5.jpg" alt="">
- <div class="title">8h 鹅绒被</div>
- <div class="price">¥</div>
- </li>
- <li>
- <a href="javascript:;" class="abtn" data-id="" data-url="images/6.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
- <img src="data:images/6.jpg" alt="">
- <div class="title">8h 鹅绒被</div>
- <div class="price">¥</div>
- </li>
- <li>
- <a href="javascript:;" class="abtn" data-id="" data-url="images/7.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
- <img src="data:images/7.jpg" alt="">
- <div class="title">8h 鹅绒被</div>
- <div class="price">¥</div>
- </li>
- <li>
- <a href="javascript:;" class="abtn" data-id="" data-url="images/8.jpg" data-title="8h 鹅绒被" data-price="" data-amount="">添加到购物车</a>
- <img src="data:images/8.jpg" alt="">
- <div class="title">8h 鹅绒被</div>
- <div class="price">¥</div>
- </li>
- </ul>
- </div>
- </body>
- <script type="text/javascript" src="scripts/common.js"></script>
- <script type="text/javascript" src="scripts/productList.js"></script>
- </html>
productList.html
购物车商品页面
- <!doctype html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>商品列表</title>
- <link rel="stylesheet" type="text/css" href="styles/productList.css"/>
- </head>
- <body>
- <div class="listbox">
- <a href="productList.html" class="mycart">返回商品列表</a>
- <ul id="list" class="list">
- </ul>
- </div>
- </body>
- <script type="text/javascript" src="scripts/common.js"></script>
- <script type="text/javascript" src="scripts/shoppingCart.js"></script>
- </html>
shoppingCart.html
2.页面样式(样式)(文件夹名称:styles)
- @charset "ntf-8";
- /* css document */
- /* 样式覆盖 */
- html,body,form,table,th,tr,td,ul,li,ol,dl,dd,dt,p,h1,h2,h3,h4,h5,h6,fieldset,figure,hr,div{
- margin: ;
- padding: ;
- }
- html,body{
- height: %;
- }
- body{
- font-family: "Microsoft YaHei","Arial";
- font-size: 16px;
- background: #f3f3f3;
- }
- ul,ol{
- list-style: none;
- }
- img{
- border: none;
- display: block;
- }
- a{
- text-decoration: none;
- }
- /* listbox */
- .listbox{
- width: %;
- margin: auto;
- overflow:hidden;
- text-align: center;
- }
- .mycart{
- display: inline-block;
- padding: 10px 50px;
- border: 10px solid #f3f3f3;
- font-weight: bold;
- font-size: 18px;
- color: #;
- background: #e33333;
- }
- .list li{
- width: %;
- background: #ffffff;
- float: left;
- min-height: 100px;
- _height:100px;
- box-sizing: border-box;
- border: 10px solid #f3f3f3;
- text-align: center;
- border-radius: 10px;
- }
- .list li img{
- width: %;
- }
- .list li .abtn{
- width: %;
- height: 50px;
- display: inline-block;
- background: #e33333;
- font-weight: bold;
- line-height: 50px;
- text-decoration: none;
- color:#;
- cursor: pointer;
- letter-spacing: 8px;
- }
- .list li .title{
- line-height: 40px;
- }
- .list li .price{
- line-height: 40px;
- color: #e33333;
- font-size: 18px;
- }
productList.css
3.脚本文件(行为)(文件夹名称:scripts)
封装函数及公用的方法
- /*封装的公用函数—开始*/
- function $(id) {
- return document.getElementById(id);
- }
- function getTagByClassName(sClassName) {
- if (document.getElementsByClassName) {
- return document.getElementsByClassName(sClassName);
- }
- else
- {
- var allTags=document.getElementsByTagName("*");
- var tag=[];
- for (var i = ; i < allTag.length; i++) {
- if (allTags[i].className==sClassName) {
- tag.push(allTags[i]);
- }
- }
- return tag;
- }
- }
- /*封装的公用函数—完毕*/
- //增加或修改cookie
- function setCookie(name,value,days,path){
- days=days||;
- path=path||'/';
- var oDate=new Date();
- oDate.setDate(oDate.getDate()+days);
- document.cookie = name + '=' + encodeURIComponent(value) + ';expires=' + oDate +';path=' + path;
- }
- // 获取cookie
- function getCookie(name) {
- var aCookie = document.cookie.split('; ');
- for(var i = ; i < aCookie.length; i++) {
- var temp = aCookie[i].split('=');
- if(temp[] === name) {
- return decodeURIComponent(temp[]);
- }
- }
- }
common.js
关于商品列表的脚本
- /*网页加载完成后执行的事件*/
- window.onload=function() {
- var oAbtn=getTagByClassName("abtn");
- for (var i = ; i < oAbtn.length; i++) {
- oAbtn[i].onclick=function() {
- var goodId=this.getAttribute('data-id');
- var goodSrc=this.getAttribute('data-url');
- var goodTitle=this.getAttribute('data-title');
- var goodPrice=this.getAttribute('data-price');
- var goodAmount=this.getAttribute('data-amount');
- //创建货物对象并赋值
- var oGood={
- id:goodId,
- src:goodSrc,
- title:goodTitle,
- price:goodPrice,
- amount:goodAmount
- };
- //读取内存中的cookie信息
- var sGoodlist=getCookie("aGoodList")
- //获取货物数组,如果货物数组存在则在此基础上进行修改数据,不存在则创建新的数组存储货物对象
- var aGoodList=sGoodlist?JSON.parse(sGoodlist):[];
- //判断是否存在将要添加到购物车的货物
- var whetherExsits=aGoodList.every(function(v) {
- if (v.id===oGood.id) {
- //存在修改购物车的货物数量
- v.amount++;
- return false;
- }
- return true;
- });
- //不存在则将货物对象追加到数组
- if (whetherExsits) {
- aGoodList.push(oGood);
- }
- setCookie("aGoodList",JSON.stringify(aGoodList),);
- }
- }
- }
productList.js
关于购物车的脚本
- window.onload=function() {
- var sGoodlist=getCookie("aGoodList");
- var aGoodList=sGoodlist?JSON.parse(sGoodlist):[];
- for (var i = ; i < aGoodList.length; i++) {
- var oLi=document.createElement('li');
- 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>';
- $("list").appendChild(oLi);
- var oAbtn=getTagByClassName("abtn");
- oAbtn[i].index=i;
- oAbtn[i].onclick=function() {
- //商品数量没删除一次减一件
- if (aGoodList[this.index].amount>) {
- aGoodList[this.index].amount--
- }
- else
- {
- //剩余一件商品删除该对象
- $("list").removeChild(this.parentNode);
- aGoodList.splice(this.index,)//掌握splice的应用
- }
- //将最新商品保存到cookie
- setCookie("aGoodList",JSON.stringify(aGoodList),);
- window.location.reload();
- }
- }
- }
shoppingCart.js
4.图片资源(上方为图片名称)(文件夹名称:images)
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
Demo—cookie电商购物车的更多相关文章
- Laravel 获取当前 Guard 分析 —源自电商购物车的实际需求
iBrand 产品中关于购物车的需求比较复杂,我们基于 overture/laravel-shopping-cart 扩展出了更加符合电商需求的购物车包,之前有文章进行过简单的介绍: Laravel ...
- 【Redis】Hash常见应用场景 - 电商购物车
电商购物车 以用户id为key 商品id为field 商品数量为value 购物车操作 [key(用户id),field(商品id),value(数量)] 添加商品 -> hset cart: ...
- 走进Vue时代进阶篇(01):重构电商购物车模块
前言 从这篇文章开始,我准备给大家分享一些关于Vue.js这门框架的技巧性系列文章,正好我们公司项目中也用到了Vue.所以,教是最好的学.进阶篇比较适合于二三线城市,还在小厂打拼的童鞋们.欢迎你们跟着 ...
- iOS 电商购物车倒计时时间计算
/** * 倒计时 * * @param endTime 截止的时间戳 * * @return 返回的剩余时间 */ - (NSString*)remainingTimeMethodAction:(l ...
- 使用“消息服务框架”(MSF)实现分布式事务的三阶段提交协议(电商创建订单的示例)
1,示例解决方案介绍 在上一篇 <消息服务框架(MSF)应用实例之分布式事务三阶段提交协议的实现>中,我们分析了分布式事务的三阶段提交协议的原理,现在我们来看看如何使用消息服务框架(MSF ...
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
- 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文
阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...
- Java开源生鲜电商平台-购物车模块的设计与架构(源码可下载)
ava开源生鲜电商平台-购物车模块的设计与架构(源码可下载) 说明:任何一个电商无论是B2C还是B2B都有一个购物车模块,其中最重要的原因就是客户需要的东西放在一起,形成一个购物清单,确认是否有问题, ...
- Cookie防伪造防修改 电商课题:cookie防篡改
主要防止非法用户修改cookie信息,以及cookie的超时时间 传统cookie存储,Cookie(name, value),value很容易就被篡改. 防修改cookie存储,Cookie(nam ...
随机推荐
- idea 破解代码
下面是idea的破解方法,手动执行对应的main方法即可.亲测Idea 14 完美破解~~废话少说,上代码... package com.jd.serializable; import java.ma ...
- oracle用户解锁
创建一个概要文件 create profile frank_profile limit SESSIONS_PER_USER 5 IDLE_TIME 2 FAILED_LOGIN_ ...
- 硬盘IOPS与读写速度
IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一.IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求 ...
- python‘s second day for me
in not in 主要用来检测一些字符串是否存在,或者避免一些字符串 while True: comment = input('请输入你的评论') if '顾清秋' in comment: ...
- C++模板类练习题
题目说明: 编写一个程序,使用类模板对数组元素进行排序,倒置.查找和求和 具有对数组元素进行排序,倒置.查找和求和功能, 然后产生类型实参分别为int型和double型的两个模板类, 分别对整型数组与 ...
- ansible自动化运维工具使用详解
一. ansible 简介 1. ansible ansible是新出现的 自动化 运维工具 , 基于Python研发 . 糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行 ...
- MySQL查看用户权限的两种方法
http://yanue.net/post-96.html MySQL查看用户权限命令的两方法: 一. 使用MySQL grants MySQL grant详细用法见:http://yanue.net ...
- HALCON形状匹配(转)
LIntExport Herror create_shape_model( const Hobject& Template , //reduce_domain后的模板图像 Hlong N ...
- UNITY IMGUI
这几天研究OPENGL时,想找一个UI库来用,发现了IMGUI,到网上搜索评估中,突然发现它似乎和UNITY有关系. UNITY文档中提到过IMGUI,不知道是不一个东西,仔细看了下文档,果然是.原文 ...
- elasticsearch中的mapping简介
默认mapping elasticsearch(以下简称ES)是没有模式(schema)的,当我们执行以下命令: curl -d '{"name":"zach" ...