<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物车特效</title>
<style type="text/css">
*{margin: 0;padding: 0;list-style: none;}
.content{
width: 400px;
height: 300px;
margin: auto;
}
.list li{
float: left;
margin: 10px;
cursor: pointer;
}
.list li img{
height: 100px;
width: 100px;
}
.list li .name{
font-size: 12px;
text-align: center;
}
.list li .price{
font-size: 14px;
color: red;
text-align: center;
}
.shopp{
width: 800px;
padding-left: 100px;
}
#tb tr th{
font-size: 14px;
color: #122B40;
padding: 5px;
width: 200px;
border: 1px solid #666;
}
#tb td{
border-top: 0;
font-size: 16px;
color: #101010;
padding-left: 45px;
border: 1px solid #666;
}
#tb td img{
width:36px;
height:36px
}
#tb .numdit{
width: 26px;
height: 26px;
background-color: #23527C;
border-radius: 13px;
color: #CCCCCC;
font-size: 24px;
text-decoration: none;
font-weight: bold;
display: inline-block;
text-align: center;
margin-top: 10px;
padding-bottom: 10px;
}
#tb .delect{
width: 50px;
height: 30px;
background-color: red;
color: #CCCCCC;
}
.bottomk{
width: 798px;
height: 36px;
border: 1px solid #666666;
margin-left: 100px;
}
.bottomkLeft{
float: left;
width: 80px;
height: 36px;
line-height: 36px;
margin-left: 30px;
background-color: #204D74;
border-radius: 13px;
}
.bottomkLeft a{
text-decoration: none;
font-size: 20px;
color: #CCCCCC;
}
.bottomkRight{
float: right;
width: 200px;
height: 36px;
line-height: 36px;
padding-right: 60px;
}
.bottomkRight a{
text-decoration: none;
font-size: 16px;
}
.bottomkRight span{
font-size: 16px;
color: red;
}
</style>
</head>
<body>
<div class="content">
<ul class="list" id="ul">
<li>
<div>
<img src="img/1.jpg" />
</div>
<p class="name">荣耀V10</p>
<p class="price">
<span>$</span>
<span>3000</span>
</p>
</li>
<li>
<div>
<img src="img/2.jpg" />
</div>
<p class="name">苹果8</p>
<p class="price">
<span>$</span>
<span>5000</span>
</p>
</li>
<li>
<div>
<img src="img/3.jpg" />
</div>
<p class="name">小米MIXS2</p>
<p class="price">
<span>$</span>
<span>3299</span>
</p>
</li>
<li>
<div>
<img src="img/4.jpg" />
</div>
<p class="name">联想小新</p>
<p class="price">
<span>$</span>
<span>6299</span>
</p>
</li>
<li>
<div>
<img src="img/5.jpg" />
</div>
<p class="name">戴尔</p>
<p class="price">
<span>$</span>
<span>5499</span>
</p>
</li>
<li>
<div>
<img src="img/6.jpg" />
</div>
<p class="name">小米笔记本</p>
<p class="price">
<span>$</span>
<span>5599</span>
</p>
</li>
</ul>
</div>
<div class="shopp">
<table id="tb" cellpadding="0"cellspacing="0">
<tr>
<th><input type="checkbox" οnclick="allCheckbox(this)" id="inck" />全选</th>
<th>商品图片</th>
<th>商品名称</th>
<th>商品价格</th>
<th>商品数量</th>
<th>编辑</th>
</tr>
<!--<tr>
<td><input type="checkbox" /></td>
<td>
<img src="img/1.jpg" />
</td>
<td>荣耀V10</td>
<td>3299</td>
<td>
<a href="#" class="numdit" οnclick="subNum(this)">-</a>
<span>1</span>
<a href="#" class="numdit" οnclick="addNum(this)">+</a>
</td>
<td>
<a href="#" class="delect" οnclick="removeTR(this)">删除</a>
</td>
</tr>-->
</table>
</div>
<div class="bottomk">
<div class="bottomkLeft">
<a href="#" οnclick="removCK()">删除选中</a>
</div>
<div class="bottomkRight">
<a href="#">总计:</a>
<span id="totals">0</span>
</div>
</div>
<script>
var tb=document.getElementById("tb");
//增加tr
window.οnlοad=function(){
//从localstorage取出购物车信息
if(window.localStorage){
var shoppingText=localStorage.getItem("shoppingInfo");
if(shoppingText!=null){
var shopping=JSON.parse(shoppingText);
for(var a=0;a<shopping.length;a++){
var tr=tb.insertRow(tb.rows.length);
var td1=tr.insertCell(tr.cells.length);
td1.innerHTML="<input type='checkbox' class='inp' />";
var td2=tr.insertCell(tr.cells.length);
td2.innerHTML="<img src='"+shopping[a].img+"' />";
var td3=tr.insertCell(tr.cells.length);
td3.innerHTML=shopping[a].name;
var td4=tr.insertCell(tr.cells.length);
td4.innerHTML=shopping[a].price;
var td5=tr.insertCell(tr.cells.length);
td5.innerHTML="<a href='#' class='numdit' οnclick='subNum(this)'>-</a><span>"+shopping[a].num+"</span><a href='#' class='numdit' οnclick='addNum(this)'>+</a>";
var td6=tr.insertCell(tr.cells.length);
td6.innerHTML="<a href='#' class='delect' οnclick='removeTR(this)'>删除</a>";
}
moneys();
}
}
var lis=document.getElementById("ul").children;
for(var i=0;i<lis.length;i++){
lis[i].οnclick=function(){
var img=this.children[0].children[0].getAttribute("src");
var name=this.children[1].innerHTML;
var price=this.children[2].children[1].innerHTML;
var isExist=false;
for(var j=1;j<tb.rows.length;j++){
if(tb.rows[j].cells[2].innerHTML==name){
var oldnum=tb.rows[j].cells[4].children[1].innerHTML;
tb.rows[j].cells[4].children[1].innerHTML=parseInt(oldnum)+1;
isExist=true;
if(window.localStorage){
var shoppingText=localStorage.getItem("shoppingInfo");
var shoppingObject=JSON.parse(shoppingText);
shoppingObject[j-1].num++;
localStorage.setItem("shoppingInfo",JSON.stringify(shoppingObject));
}
break;
}
}
if(isExist==false){
var tr=tb.insertRow(tb.rows.length);
var td1=tr.insertCell(tr.cells.length);
td1.innerHTML="<input type='checkbox' class='inp' />";
var td2=tr.insertCell(tr.cells.length);
td2.innerHTML="<img src='"+img+"' />";
var td3=tr.insertCell(tr.cells.length);
td3.innerHTML=name;
var td4=tr.insertCell(tr.cells.length);
td4.innerHTML=price;
var td5=tr.insertCell(tr.cells.length);
td5.innerHTML="<a href='#' class='numdit' οnclick='subNum(this)'>-</a><span>1</span><a href='#' class='numdit' οnclick='addNum(this)'>+</a>";
var td6=tr.insertCell(tr.cells.length);
td6.innerHTML="<a href='#' class='delect' οnclick='removeTR(this)'>删除</a>";
//向本地存储中添加一条商品信息
if(window.localStorage){
var shoppingText=localStorage.getItem("shoppingInfo");
var shoppingObject=null;
if(shoppingText==null){
shoppingObject=[];
}else{
shoppingObject=JSON.parse(shoppingText);
}
var goods=new Object();
goods.img=img;
goods.name=name;
goods.price=price;
goods.num=1;
//将商品对象保存到数组中
shoppingObject.push(goods);
localStorage.setItem("shoppingInfo",JSON.stringify(shoppingObject))
}
}
moneys();
}
}
}
//全选
function allCheckbox(ck){
var is=document.getElementsByClassName("inp");
for(var i=0;i<is.length;i++){
is[i].checked=ck.checked;
}
}
//删除选中
function removCK(){
var is=document.getElementsByClassName("inp");
for(var i=0;i<is.length;i++){
if(is[i].checked==true){
var tr=is[i].parentNode.parentNode;
var index=tr.rowIndex;
var tbody=tr.parentNode;
tbody.removeChild(tr);
i--;
if(window.localStorage){
var shoppingText=localStorage.getItem("shoppingInfo");
var shoppingObject=JSON.parse(shoppingText);
shoppingObject.splice(index-1,1);
localStorage.setItem("shoppingInfo",JSON.stringify(shoppingObject));
}
}
}
if(document.getElementById("inck").checked==true){
document.getElementById("inck").checked=false;
}
moneys();
}
//增加
function addNum(bt){
var num=bt.previousElementSibling;
num.innerHTML=parseInt(num.innerHTML)+1;
var index=bt.parentNode.parentNode.rowIndex-1;
//增加本地缓存中的数量
if(window.localStorage){
var shoppingText=localStorage.getItem("shoppingInfo");
var shoppingObject=JSON.parse(shoppingText);
shoppingObject[index].num=shoppingObject[index].num+1;
localStorage.setItem("shoppingInfo",JSON.stringify(shoppingObject));
}
moneys();
}
//减少
function subNum(bt){
var num=bt.nextElementSibling;
var newNum=parseInt(num.innerHTML);
var index=bt.parentNode.parentNode.rowIndex-1;
if(newNum>1){
num.innerHTML=newNum-1;
//减少本地缓存中的数量
if(window.localStorage){
var shoppingText=localStorage.getItem("shoppingInfo");
var shoppingObject=JSON.parse(shoppingText);
shoppingObject[index].num=shoppingObject[index].num-1;
localStorage.setItem("shoppingInfo",JSON.stringify(shoppingObject));
}
moneys();
}
}
//删除一行
function removeTR(a){
var tr=a.parentNode.parentNode;
var index=tr.rowIndex;
var tbody=tr.parentNode;
tbody.removeChild(tr);
//删除本地缓存中的一行
if(window.localStorage){
var shoppingText=localStorage.getItem("shoppingInfo");
var shoppingObject=JSON.parse(shoppingText);
shoppingObject.splice(index-1,1);
localStorage.setItem("shoppingInfo",JSON.stringify(shoppingObject));
}
}
//计算总价
function moneys(){
var money=0;
for(var i=1;i<tb.rows.length;i++){
var price=parseFloat(tb.rows[i].cells[3].innerHTML);
var num=parseInt(tb.rows[i].cells[4].children[1].innerHTML);
money+=price*num;
}
document.getElementById("totals").innerHTML=money;
}
</script>
</body>
</html>