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="1" data-url="images/1.jpg" data-title="8h 鹅绒被" data-price="199" data-amount="1">添加到购物车</a>
                <img src="images/1.jpg" alt="">
                <div class="title">8h 鹅绒被</div>
                <div class="price">¥998</div>
            </li>
            <li>
                <a href="javascript:;" class="abtn" data-id="2" data-url="images/2.jpg" data-title="8h 鹅绒被" data-price="199" data-amount="1">添加到购物车</a>
                <img src="images/2.jpg" alt="">
                <div class="title">8h 鹅绒被</div>
                <div class="price">¥998</div>
            </li>
            <li>
                <a href="javascript:;" class="abtn" data-id="3" data-url="images/3.jpg" data-title="8h 鹅绒被" data-price="199" data-amount="1">添加到购物车</a>
                <img src="images/3.jpg" alt="">
                <div class="title">8h 鹅绒被</div>
                <div class="price">¥998</div>
            </li>
            <li>
                <a href="javascript:;" class="abtn" data-id="4" data-url="images/4.jpg" data-title="8h 鹅绒被" data-price="199" data-amount="1">添加到购物车</a>
                <img src="images/4.jpg" alt="">
                <div class="title">8h 鹅绒被</div>
                <div class="price">¥998</div>
            </li>
            <li>
                <a href="javascript:;" class="abtn" data-id="5" data-url="images/5.jpg" data-title="8h 鹅绒被" data-price="199" data-amount="1">添加到购物车</a>
                <img src="images/5.jpg" alt="">
                <div class="title">8h 鹅绒被</div>
                <div class="price">¥998</div>
            </li>
            <li>
                <a href="javascript:;" class="abtn" data-id="6" data-url="images/6.jpg" data-title="8h 鹅绒被" data-price="199" data-amount="1">添加到购物车</a>
                <img src="images/6.jpg" alt="">
                <div class="title">8h 鹅绒被</div>
                <div class="price">¥998</div>
            </li>
            <li>
                <a href="javascript:;" class="abtn" data-id="7" data-url="images/7.jpg" data-title="8h 鹅绒被" data-price="199" data-amount="1">添加到购物车</a>
                <img src="images/7.jpg" alt="">
                <div class="title">8h 鹅绒被</div>
                <div class="price">¥998</div>
            </li>
            <li>
                <a href="javascript:;" class="abtn" data-id="8" data-url="images/8.jpg" data-title="8h 鹅绒被" data-price="199" data-amount="1">添加到购物车</a>
                <img src="images/8.jpg" alt="">
                <div class="title">8h 鹅绒被</div>
                <div class="price">¥998</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: 0;
    padding: 0;
}
html,body{
    height: 100%;
}
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: 95%;
    margin: 0 auto;
    overflow:hidden;
    text-align: center;
}
.mycart{
    display: inline-block;
    padding: 10px 50px;
    border: 10px solid #f3f3f3;
    font-weight: bold;
    font-size: 18px;
    color: #000000;
    background: #e33333;
}
.list li{
    width: 25%;
    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: 100%;
}
.list li .abtn{
    width: 100%;
    height: 50px;
    display: inline-block;
    background: #e33333;
    font-weight: bold;
    line-height: 50px;
    text-decoration: none;
    color:#000000;
    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 = 0; i < allTag.length; i++) {
            if (allTags[i].className==sClassName) {
                tag.push(allTags[i]);
            }
        }
        return tag;
    }
}
/*封装的公用函数—完毕*/

//增加或修改cookie
function setCookie(name,value,days,path){
    days=days||0;
    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 = 0; i < aCookie.length; i++) {
        var temp = aCookie[i].split(‘=‘);

        if(temp[0] === name) {
            return decodeURIComponent(temp[1]);
        }
    }
}

common.js

关于商品列表的脚本

/*网页加载完成后执行的事件*/
window.onload=function() {
    var oAbtn=getTagByClassName("abtn");
    for (var i = 0; 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),7);
        }
    }
}  

productList.js

关于购物车的脚本

window.onload=function() {

    var sGoodlist=getCookie("aGoodList");
    var aGoodList=sGoodlist?JSON.parse(sGoodlist):[];
    for (var i = 0; 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>1) {
                aGoodList[this.index].amount--
            }
            else
            {
                //剩余一件商品删除该对象
                $("list").removeChild(this.parentNode);
                aGoodList.splice(this.index,1)//掌握splice的应用
            }
            //将最新商品保存到cookie
            setCookie("aGoodList",JSON.stringify(aGoodList),7);
            window.location.reload();
        }
    }
}

shoppingCart.js

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

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

原文地址:https://www.cnblogs.com/witkeydu/p/8407758.html

时间: 2024-08-01 23:58:16

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

iOS 实现一个类似电商购物车界面示例

iOS 实现一个类似电商购物车界面示例 先看界面效果图: 主要实现了商品的展示,并且可以对商品进行多选操作,以及改变商品的购买数量.与此同时,计算出,选中的总价格. 做此类型项目:要注意的:视图与数据要分离开来.视图的展现来源是数据模型层.所以我做的操作就是改变数据层的内容,在根据数据内容,去更新视图界面. 已下是具体实现思路与代码: 1. 实现步骤 在AppDelegate.m中包含ViewController.h头文件,创建ViewController对象(vc),接着创建一个UINavig

互联网电商购物车架构演变案例

       购物车主要作用在于:1.和传统卖场类似,方便用户一次选择多件商品去结算.2.充当临时收藏夹的功能.3.对于商家来说,购物车是向用户推销的最佳场所之一. 早期 ERP拆分 业务服务化拆分 WCS拆分 购物车功能模块概况 层级设计 群集设计 云购物车从应用层 面上设计了三个-- 交互层.业务组装,基础服(横向)每一都 由一个或多集群组成     交互层 分为购物页 (加入购物车,车一去结算),结算页(车二,立即购,提交订单去 支付) ? 业务组装层 提供标准购物车流程 ,非提供标准购物

电商-购物车总结

1---------------------购物车-------------------------------------------- 购物车顾名思义是将你准备购买的东西先放置到购物车中,等到你想到付款的时候直接去购物车中去付款.是一个商城必备的功能之一. 2.-------------------------大型商城的购物车方式------------------------------------- (1)目前京东是可以在未登录的状态将你点击到购物车的商品添加到你之后登录账户的购物车中,

电商购物车解决方案

购物车列表:cartlist cookies存储 Redis存储 SecurityContextHolder 如果在配置文件配置security="none" 通过上面获取用户名则会报错 空指针 可以通过匿名角色解决 购物车对象:cart 商家ID: 商家NAME: 购物明细列表:orderitemlist 数量: 价格: orderitem 购物车对象: 后端注意事项:安全性 购物车购物明细数量小于等于0 前端控制层注意:把cart 和orderitem 单独出来 便于后期使用 ()

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

/** * 倒计时 * * @param endTime 截止的时间戳 * * @return 返回的剩余时间 */ - (NSString*)remainingTimeMethodAction:(long long)endTime { //得到当前时间 NSDate *nowData = [NSDate date]; //把时间戳转换成date格式 NSDate *endData=[NSDate dateWithTimeIntervalSince1970:endTime]; //创建日历对象

电商大数据平台运维案例

技术栈 数据流向 平台规模差异化,隔离化 YARN: https://baike.baidu.com/item/yarn/16075826?fr=aladdin 今天先到这儿,希望对您在系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 互联网电商购物车架构演变案例互联网业务场景下消息队列架构互联网高效研发团队管理演进之一消息系统架构设计演进互联网电商搜索架构演化之一企业信息化与软件工程的迷思企业项目化管理介绍软件项目成功之要素人际沟通风格介绍一

电商行业运维实践

电商行业运维实践 ------------------------------------------------------------------ 今天先到这儿,希望对您技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 国际化环境下系统架构演化微服务架构设计视频直播平台的系统架构演化微服务与Docker介绍Docker与CI持续集成/CD互联网电商购物车架构演变案例互联网业务场景下消息队列架构互联网高效研发团队管理演

电商网站中添加商品到购物车功能模块2017.12.8

前言: 电商网站中添加商品到购物车功能模块实现: 根据前一篇博客的介绍,我们看到淘宝网站为了保证购物车数据的同步,直接是强制用户必须登录才可以将商品加入购物车.而京东网站是用户在未登录的状态下也可以将商品加入到购物车,此时这个是保存在了cookie中,然后用户登录后,根据商品的id判断商品是否存在,将两个购物车的商品合并,形成最终的购物车商品. 本篇文章分两个模块,分别看下这两个功能是如何实现的: 1.必须在用户登录的前提下,才可以将商品加入到购物车列表 我们今天先看下淘宝网站的状态下的添加商品

关于电商网站购物车功能如何与登录账号相关联的一点想法

最近在试着做电商网站,自然也需要涉及到实现购物车的功能.然后就想到去用cookie来完成购物车的功能. 实现过程是新建一个cookie,把购物车实体类的list放进去,每次给购物车新增商品和删除商品的时候就new一个新的cookie,把key设置成一样的就可以覆盖掉之前的cookie内容了,这样就可以实现每次实现更改购物车内容之后,更新cookie的功能了. 但是完成之后遇到了一个问题,就是如何把这个存在本地客户端的cookie购物车和登录的账号关联起来呢?总不能每个登录用户都共享同一个购物车吧