cookie JS

Posted caoxiaole

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cookie JS相关的知识,希望对你有一定的参考价值。

  1 原生JS 购物车及购物页面的cookie使用
  2 ////////////////////////////////////购物页面
  3 
  4 <!DOCTYPE html>
  5 <html lang="en">
  6 <head>
  7 <meta charset="UTF-8">
  8 <title>购物页面</title>
  9 <style>
 10 ul{list-style:none;padding:0;margin:0;}
 11 .goods li{display:inline-block;border:1px solid #ddd;padding:10px;margin:10px;}
 12 .goods li:hover{background-color:#efefef;}
 13 .goods .price{color:#f00;font-weight:bold;}
 14 .goods .price::before{
 15 content:"";
 16 }
 17 </style>
 18 <script>
 19 window.onload = function(){
 20 var goods = document.getElementsByClassName(goods)[0];
 21 
 22 // 用于保存购物车商品信息
 23 var carList = [];
 24 
 25 // 先获取当前cookie
 26 var cookies = document.cookie.split(; );
 27 for(var i=0;i<cookies.length;i++){
 28 var arr = cookies[i].split(=);
 29 if(arr[0] === carlist){
 30 carList = JSON.parse(arr[1]);
 31 }
 32 }
 33 
 34 // 事件委托
 35 goods.onclick = function(e){
 36 e = e || window.event;
 37 var target = e.target || e.srcElement;
 38 
 39 // 添加到购物车
 40 if(target.tagName.toLowerCase() === button){
 41 
 42 // 获取当前li
 43 var currentLi = target.parentElement.parentElement;
 44 var children = currentLi.children;
 45 var currentGUID = currentLi.getAttribute(data-guid);
 46 
 47 // 先创建一个对象保存当前商品信息
 48 var goodsObj = {};
 49 goodsObj.guid = currentGUID;
 50 goodsObj.qty = 1;
 51 goodsObj.name = children[1].innerHTML;
 52 goodsObj.price = children[2].innerHTML;
 53 goodsObj.imgUrl = children[0].src;
 54 
 55 // 如果cookie为空,则直接添加
 56 if(carList.length===0){
 57 // 添加到carList
 58 carList.push(goodsObj);
 59 }else{
 60 // 先判断cookie中有无相同的guid商品
 61 for(var i=0;i<carList.length;i++){
 62 // 如果商品已经存在cookie中,则数量+1
 63 if(carList[i].guid === currentGUID){
 64 carList[i].qty++;
 65 break;
 66 }
 67 }
 68 
 69 // 如果原cookie中没有当前商品
 70 if(i===carList.length){
 71 // 添加到carList
 72 carList.push(goodsObj);
 73 }
 74 
 75 }    
 76 // 存入cookie
 77 // 把对象/数组转换诚json字符串:JSON.stringify()
 78 document.cookie = carlist= + JSON.stringify(carList);
 79 }
 80 
 81 }
 82 }
 83 </script>
 84 </head>
 85 <body>
 86 <ul class="goods">
 87 <li data-guid="g01">
 88 <img src="images/shirt_1.jpg">
 89 <p>短袖衬衣</p>
 90 <p class="price">98.88</p>
 91 <div class="add2cart">
 92 <button>添加到购物车</button>
 93 </div>
 94 </li>
 95 <li data-guid="g02">
 96 <img src="images/shirt_2.jpg">
 97 <p>短袖衬衣2</p>
 98 <p class="price">88.88</p>
 99 <div class="add2cart">
100 <button>添加到购物车</button>
101 </div>
102 </li>
103 <li data-guid="g03">
104 <img src="images/shirt_3.jpg">
105 <p>短袖衬衣3</p>
106 <p class="price">9.98</p>
107 <div class="add2cart">
108 <button>添加到购物车</button>
109 </div>
110 </li>
111 <li data-guid="g04">
112 <img src="images/shirt_4.jpg">
113 <p>短袖衬衣4</p>
114 <p class="price">8.88</p>
115 <div class="add2cart">
116 <button>添加到购物车</button>
117 </div>
118 </li>
119 </ul>
120 <a href="04car.html">去结算</a>
121 </body>
122 </html>
123 
124  
125 
126 //购物车页面、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
127 
128 <!DOCTYPE html>
129 <html lang="en">
130 <head>
131 <meta charset="UTF-8">
132 <title>购物车</title>
133 <style>
134 #carList li{position:relative;padding-bottom:15px;margin-bottom:15px;border-bottom:1px solid #ddd;}
135 #carList img{display:block;width:100px;}
136 #carList li .btn-close{position:absolute;top:0;right:0;padding:0 5px;cursor:default;}
137 #carList li .btn-close:hover{background-color:#f00;color:#fff;}
138 .subPrice{padding:5px 20px;color:#f00;font-weight:bold;text-align:right;}
139 #carList .price{color:#f00;}
140 .price::before{
141 content:;
142 font-size:11px;
143 }
144 #carList .price span{font-size:11px;}
145 </style>
146 <script>
147 window.onload = function(){
148 /*
149 读取cookie中的carlist
150 把json字符串转换成对象/数组:JSON.parse()
151 json字符串格式:
152 1.必须用双引号
153 2.不能右注释
154 */
155 var oCarList = document.getElementById(carList);
156 var oSubPrice = oCarList.nextElementSibling;
157 var btnClear = document.getElementById(btnClear);
158 
159 var carList;
160 var cookies = document.cookie.split(; );
161 for(var i=0;i<cookies.length;i++){
162 var arr = cookies[i].split(=);
163 if(arr[0] === carlist){
164 console.log(JSON.parse(arr[1]));
165 carList = JSON.parse(arr[1]);
166 }
167 }
168 
169 var subPrice = 0;
170 
171 if(carList){
172 var ul = document.createElement(ul);
173 for(var i=0;i<carList.length;i++){
174 var li = document.createElement(li);
175 // 给每个li添加data-guid属性
176 li.setAttribute(data-guid,carList[i].guid);
177 
178 // 商品名
179 var title = document.createElement(h4);
180 title.innerHTML = carList[i].name;
181 
182 // 商品价格
183 var price = document.createElement(p);
184 price.className = price;
185 price.innerHTML = carList[i].price + &times; + carList[i].qty;
186 
187 // 商品图片
188 var img = document.createElement(img);
189 img.src = carList[i].imgUrl;
190 
191 // 添加删除按钮
192 var btnClose = document.createElement(span);
193 btnClose.innerHTML = &times;;
194 btnClose.className = btn-close;
195 
196 // 计算总价
197 subPrice += carList[i].price*carList[i].qty;
198 
199 li.appendChild(title);
200 li.appendChild(price);
201 li.appendChild(img);
202 li.appendChild(btnClose);
203 
204 ul.appendChild(li);
205 }
206 
207 // 写入页面
208 oCarList.appendChild(ul);
209 
210 // 写入总价
211 // toFixed(n)获取小数点后n位(自动四舍五入,Number类型的方法)
212 oSubPrice.innerHTML = <span class="price"> + subPrice.toFixed(2) + </span>;
213 }
214 
215 
216 // 删除商品
217 oCarList.onclick = function(e){
218 e = e || window.event;
219 var target = e.target || e.srcElement;
220 
221 // 是否点击了删除按钮
222 if(target.className === btn-close){
223 var currentLi = target.parentElement;
224 
225 // 获取当前guid
226 var currentGUID = currentLi.getAttribute(data-guid);
227 
228 // 删除cookie中对应的商品
229 // 根据guid取对比
230 for(var i=0;i<carList.length;i++){
231 // 找出要删除的商品
232 if(carList[i].guid === currentGUID){
233 carList.splice(i,1);
234 break;
235 }
236 }
237 
238 // 更新cookie
239 document.cookie = carlist= + JSON.stringify(carList);
240 
241 // 删除li节点
242 currentLi.parentElement.removeChild(currentLi);
243 }
244 }
245 
246 // 清空购物车
247 // 1、删除DOM节点
248 // 2、删除cookie
249 btnClear.onclick = function(){
250 oCarList.innerHTML = ‘‘;
251 oSubPrice.innerHTML = ‘‘;
252 
253 // 利用设置有效期位过期事件来达到删除cookie的效果
254 var now = new Date();
255 now.setDate(now.getDate()-7);
256 document.cookie = carlist=xx;expires= + now;
257 }
258 }
259 
260 </script>
261 </head>
262 <body>
263 <h1>购物车</h1>
264 <div id="carList">
265 
266 </div>
267 <div class="subPrice"></div>
268 <a href="#" id="btnClear">清空购物车</a>
269 </body>
270 </html>

 

以上是关于cookie JS的主要内容,如果未能解决你的问题,请参考以下文章

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

Js操作cookie的代码 要求:js对cookie设置,添加,删除 js代码简单点 ··偶JS不太好

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

cookie控制一个IP 24小时只执行一次JS退出弹窗代码