
| <style> |
| *{ |
| margin: 0; |
| padding: 0; |
| } |
| #addGoodContent{ |
| border-radius: 5px; |
| padding: 10px; |
| border: 1px solid #000; |
| line-height: 30px; |
| width: 400px; |
| } |
| #addGoodContent>span{ |
| display: inline-block; |
| width: 100px; |
| letter-spacing: 5px; |
| } |
| #goodList{ |
| overflow: hidden; |
| margin: 10px 50px; |
| } |
| .item{ |
| padding: 10px; |
| float: left; |
| width: 372px; |
| height: 154px; |
| overflow: hidden; |
| color: #333; |
| background-color: #f7f9fa; |
| border: 1px solid #f7f9fa; |
| -webkit-border-radius: 12px; |
| -moz-border-radius: 12px; |
| border-radius: 12px; |
| cursor: pointer; |
| display: flex; |
| flex-direction: row; |
| } |
| .left{ |
| margin-right: 10px; |
| } |
| .left>img{ |
| width: 150px; |
| height: 150px; |
| } |
| .right>h4{ |
| color: #333; |
| font-size: 18px; |
| line-height: 23px; |
| margin: 5px 0; |
| } |
| .right>p{ |
| font-size: 14px; |
| line-height: 22px; |
| height: 80px; |
| } |
| .right span{ |
| color: red; |
| } |
| |
| |
| |
| .small{ |
| width: 100px; |
| } |
| </style> |
| |
| <h2>添加商品</h2> |
| <div id="addGoodContent"> |
| <span>商品名</span> <input type="text"><br> |
| <span>商品价格</span> <input type="text"><br> |
| <span>商品详情</span> <br> <textarea type="text"></textarea><br> |
| <span style="width: 150px;">商品的图片</span> <input type="text"><br> |
| <button id="save">添加商品</button> |
| </div> |
| <h2>商品列表</h2> |
| <ul id="goodList"> |
| |
| </ul> |
| <a href="">去购物车页面</a> |
| |
| |
| |
| <table border="1px"> |
| <thead> |
| <tr> |
| <th><input type="checkbox" id="selectAll"> 全选</th> |
| <th> |
| 商品名 |
| </th> |
| <th> |
| 商品图片 |
| </th> |
| <th> |
| 商品详情 |
| </th> |
| <th> |
| 商品价格 |
| </th> |
| <th> |
| 商品个数 |
| </th> |
| <th> |
| 小计 |
| </th> |
| <th> |
| 操作 |
| </th> |
| </tr> |
| </thead> |
| <tbody> |
| |
| </tbody> |
| <tfoot> |
| <tr> |
| <td id="counts">已选 0</td> |
| <td colspan="8" align="right"> 合计 ¥<span class="totalPrice">0</span></td> |
| </tr> |
| </tfoot> |
| </table> |
| <script> |
| |
| |
| function addGood(goodName,goodPrice,info,imgUrl){ |
| |
| var goodList = localStorage.getItem('goodList')?JSON.parse(localStorage.getItem('goodList')):[] |
| |
| var id = Date.now()+Math.random().toFixed(2) |
| |
| var good = { |
| id, |
| goodName, |
| goodPrice, |
| info, |
| imgUrl |
| } |
| |
| goodList.push(good) |
| addGoodToUl(good) |
| localStorage.setItem("goodList",JSON.stringify(goodList)) |
| } |
| |
| var ul = document.getElementById('goodList') |
| randerGoodList() |
| |
| document.querySelector('#save').onclick = function(){ |
| |
| var inputs = document.querySelectorAll('input') |
| var info = document.querySelector('textarea').value |
| |
| addGood(inputs[0].value,Number(inputs[1].value),info,inputs[2].value) |
| } |
| |
| function randerGoodList(){ |
| |
| var goodList = localStorage.getItem('goodList')?JSON.parse(localStorage.getItem('goodList')):[] |
| |
| for(var good of goodList){ |
| addGoodToUl(good) |
| } |
| } |
| function addGoodToUl(good){ |
| ul.innerHTML += ` |
| <li class="item"> |
| <div class="left"> |
| <img src="${good.imgUrl}" alt=""> |
| </div> |
| <div class="right"> |
| <h4>${good.goodName}</h4> |
| <p>${good.info}</p> |
| <div> |
| <span>¥<b>${good.goodPrice}</b></span> |
| <button onclick="addCar(${good.id})">加入购物车</button> |
| </div> |
| </div> |
| </li> |
| ` |
| } |
| |
| function addCar(id){ |
| |
| var item = {} |
| var goodList = localStorage.getItem('goodList')?JSON.parse(localStorage.getItem('goodList')):[] |
| |
| for(var good of goodList){ |
| if(id == good.id){ |
| item = good |
| } |
| } |
| |
| var car = localStorage.getItem('car')?JSON.parse(localStorage.getItem('car')):[] |
| |
| var flag = false |
| |
| for(var good of car){ |
| if(good.id == item.id){ |
| good.count++ |
| flag = true |
| } |
| } |
| if(!flag){ |
| item.count = 1 |
| car.push(item) |
| } |
| |
| localStorage.setItem('car',JSON.stringify(car)) |
| location.reload() |
| } |
| </script> |
| <script> |
| |
| |
| var tbody = document.querySelector('tbody') |
| |
| randerList() |
| function randerList(){ |
| var car = localStorage.getItem('car')?JSON.parse(localStorage.getItem('car')):[] |
| |
| |
| for(var good of car){ |
| tbody.innerHTML += ` |
| <tr> |
| <td> |
| <input type="checkbox" class='check'> |
| </td> |
| <td> |
| ${good.goodName} |
| </td> |
| <td> |
| <img class="small" src="${good.imgUrl}" alt=""> |
| </td> |
| <td> |
| ${good.info} |
| </td> |
| <td> |
| ¥<span>${good.goodPrice}</span> |
| </td> |
| <td> |
| <button class="btn" ${good.count==1?"disabled='disabled'":""} onclick='changeCount(${good.id})'>-</button> |
| <input type="number" value="${good.count}"> |
| <button class="btn" onclick='changeCount(${good.id},true)' >+</button> |
| </td> |
| <td> |
| ¥<span>${good.goodPrice*good.count}</span> |
| </td> |
| <td> |
| <button onclick="rm(${good.id})">移除购物车</button> |
| </td> |
| </tr> |
| ` |
| } |
| |
| } |
| |
| var selectAll = document.querySelector('#selectAll') |
| var checks = document.querySelectorAll('.check') |
| |
| selectAll.onclick = function(){ |
| for(var i=0;i<checks.length;i++){ |
| checks[i].checked = this.checked |
| } |
| computedPrice() |
| computedCounts() |
| } |
| |
| for(var i=0;i<checks.length;i++){ |
| checks[i].onclick = function(){ |
| computedPrice() |
| computedCounts() |
| if(isSelectAll()){ |
| selectAll.checked = true |
| } |
| } |
| } |
| |
| function isSelectAll(){ |
| var count = 0 |
| for(var i=0;i<checks.length;i++){ |
| if(checks[i].checked){ |
| count++ |
| } |
| } |
| return count==checks.length |
| } |
| |
| function computedPrice(){ |
| var prices = 0 |
| var car = localStorage.getItem('car')?JSON.parse(localStorage.getItem('car')):[] |
| console.log(`car`, car); |
| for(var i=0;i<checks.length;i++){ |
| if(checks[i].checked){ |
| prices +=(car[i].count * car[i].goodPrice) |
| } |
| } |
| |
| document.querySelector('.totalPrice').innerText = prices |
| } |
| |
| function computedCounts(){ |
| var counts = 0 |
| var car = localStorage.getItem('car')?JSON.parse(localStorage.getItem('car')):[] |
| console.log(`car`, car); |
| for(var i=0;i<checks.length;i++){ |
| if(checks[i].checked){ |
| counts +=(car[i].count) |
| } |
| } |
| |
| document.querySelector('#counts').innerText = `数量${counts}` |
| } |
| |
| function changeCount(id,isAdd){ |
| var car = localStorage.getItem('car')?JSON.parse(localStorage.getItem('car')):[] |
| |
| for(var good of car){ |
| if(id == good.id){ |
| if(isAdd){ |
| good.count++ |
| }else{ |
| good.count-- |
| } |
| } |
| } |
| |
| localStorage.setItem('car',JSON.stringify(car)) |
| |
| |
| |
| location.reload() |
| } |
| |
| function rm(id){ |
| var car = localStorage.getItem('car')?JSON.parse(localStorage.getItem('car')):[] |
| var index = -1 |
| |
| for(var i in car){ |
| if(id ==car[i].id){ |
| index = i |
| } |
| } |
| car.splice(index,1) |
| |
| localStorage.setItem('car',JSON.stringify(car)) |
| |
| location.reload() |
| } |
| </script> |