39购物车

39购物车

实现购物车的数据存储功能,将加入购物车的商品id和数量存入cookie中

//json中存储有一些商品的id, src, price, name
let json = [
{
	"id" : 1,
    "src" : " ",
    "price" :  ,
    "name" : " "
},
{
    "id" : 2,
    "src" : " ",
    "price" :  ,
    "name" : " "
},
{
    "id" : 3,
    "src" : " ",
    "price" :  ,
    "name" : " "
}
]

在html中只有一个id名为cont的空div标签

<div id = "cont"></div>

在js中

//定义一个空的字符串用于接收拼接的标签

let html = ""

//对json数组进行遍历

json.forEach(item => {
    
    //解构赋值,遍历id, src, price, name
    
	let {
		id,
		src,
		price,
		name
	} = item
    
    //每次循环都会添加当前的json的数据,并且拼接标签到html字符串中
    
	html += '<div><img src="' + src + '><p>' + name +'</p><span>¥' +price +'</span><a href="javascript:;" οnclick="addCart(' +id +', 1)">加入购物车</a></div>'
})

//获取id名为cont的div标签

let cont = document.querySelector("#cont")

//将拼接的字符串添加到获取的div标签中,再对添加的标签设置样式
//就能看到上商品的展示的基本结构和样式

cont.innerHTML += html

//拼接的a标签里面有onclick = "addCart('+ id +', 1)"点击事件
//定义函数addCart(id, num),且num默认为1

function addCart(id, num) {
    
	//使用cookie封装的对象的方法获取名称为cart的cookie
    
	let data = cookie.getCookie("cart")
    
    //如果cookie中不存在名为cart的数据
    
	if (!data) {
        
        //将当前的id存储到定义的对象obj中且数量为1
        
		let obj = {
			[id]: 1
		}
        
        //将对象obj转化为字符串用于存储
        
		let str = JSON.stringify(obj)
        
        //使用cookie封装的对象的方法将cart存入cookie中
        
		cookie.setCookie("cart", str)
        
	} else {
        
        //如果cookie中存在名为cart的数据
        //将名为cart的cookie中的数据转为对象obj
        
		let obj = JSON.parse(data)
        
        //对对象obj进行遍历
        
		for (let i in obj) {
            
            //当对象obj的属性有商品的id时
            
			if (id == i) {
                
                //num在原来数量的基础上+1
                
				num = ++obj[id]
			}
		}
        
        //如果cookie中存在名为cart的数据,重新传入更新后的数据
        //如果cookie中不存在名为cart的数据,新建一个属性名为"id"的键值对
        
		obj[id] = num
        
        //将新的对象obj转为字符串
        
		let str = JSON.stringify(obj)
        
        //使用cookie封装的对象的方法将cart存入cookie中
        
		cookie.setCookie("cart", str)
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值