h5本地缓存实现购物车功能(全功能)

<!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>

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值