jq-demo-购物车

首页

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title></title>
  6         <style>
  7             ul, li {list-style: none;}
  8             li {
  9                 width: 100px;
 10                 height: 230px;
 11                 border: 1px solid gray;
 12                 float: left;
 13                 margin-left: 10px;
 14                 cursor: pointer;
 15             }
 16             li img {
 17                 width: 100px;
 18                 height: 100px;
 19             }
 20         </style>
 21         <script src="js/jquery-1.12.3.js"></script>
 22         <script src="js/jquery.cookie.js"></script>
 23         <script>
 24             $(function(){
 25                 
 26                 //保存从json中获取到的商品数据
 27                 var myArr = [];
 28                 
 29                 //添加点击事件
 30                 $("#list").on("click", "li", function(){
 31                     //console.log(11);
 32                     
 33                     //index
 34                     var index = $(this).index();
 35                     
 36                     //点击的商品的id
 37                     var id = myArr[index].id;
 38                     //console.log(id);
 39                     
 40                     //进入详情页
 41                     location.href = "03_detail.html?id=" + id;
 42                     
 43                 })
 44                                 
 45                 //使用Ajax获取商品数据
 46                 $.get("json/goods.json", function(responseData){
 47                     //console.log(responseData.data);
 48                     var arr = responseData.data;
 49                     myArr = arr;
 50                     
 51                     //遍历arr
 52                     for (var i=0; i<arr.length; i++){
 53                         var obj = arr[i]; //每个商品的数据
 54                         
 55                         //创建li节点
 56                         var li = $("<li></li>").appendTo("#list");
 57                         $("<img src="+ obj.img +" />").appendTo(li); //图片
 58                         $("<p>"+ obj.name +"</p>").appendTo(li); //名称
 59                         $("<p>"+ obj.unit + obj.price +"</p>").appendTo(li); //价格
 60                         $("<a href='#'>加入购物车</a>").appendTo(li); //
 61                     }                
 62                 })
 63                 
 64                 //使用ajax获取商品数据方法2
 65 //                $.get("json/goods.json", function(data) {
 66 //                    console.log(data);
 67 //                    console.log(data.data);                    
 68 //                    var arr = data.data;
 69 //                    
 70 //                    myArr = arr;
 71 //                    var liHtml = "";
 72 //                    for(var i=0; i<arr.length; i++){                        
 73 //                        liHtml += `<li>
 74 //                                        <img src=${arr[i].img}/>
 75 //                                        <p>${arr[i].name}</p>
 76 //                                        <p>${arr[i].price}</p>
 77 //                                        <a href='#'>加入购物车</a>
 78 //                                    </li>`;
 79 //                        $("#list").html(liHtml);
 80 //                    }
 81                 
 82                 
 83                 //加入购物车
 84                 $("#list").on("click", "a", function(e){
 85                     e.stopPropagation();
 86                     //console.log(11);
 87                     
 88                     var index = $(this).index("a");
 89                     //console.log(index);
 90                     
 91                     //当前要加入购物车的商品信息
 92                     var obj = myArr[index];
 93                     
 94                     
 95                     var arr = $.cookie("cart") ? JSON.parse($.cookie("cart")) : [];
 96                     var isExist = false;
 97                     for (var i=0; i<arr.length; i++){
 98                         if (arr[i].id == obj.id) {
 99                             arr[i].num++;
100                             isExist = true;
101                         }
102                     }
103                     if (!isExist) {
104                         obj.num = 1;
105                         obj.checked = true; //是否选中该商品
106                         arr.push(obj);
107                     }
108                     
109                     $.cookie("cart", JSON.stringify(arr), {expires:30, path:"/"});
110                     console.log( $.cookie("cart") )
111                 })
112                 
113                 
114                 $("#gotoCart").click(function(){
115                     location.href = "05_myCart.html";
116                 })
117                 
118             })
119         </script>
120     </head>
121     <body>
122         <button id="gotoCart">结算</button>
123         <ul id="list">
124             <!--<li>
125                 <img src="images/1.jpg" />
126                 <p>单车</p>
127                 <p>1000</p>
128             </li>
129             <li>
130                 <img src="images/2.jpg" />
131                 <p>摩托</p>
132                 <p>10000</p>
133             </li>
134             <li>
135                 <img src="images/b1.jpg" />
136                 <p>汽车</p>
137                 <p>100000</p>
138             </li>
139             <li>
140                 <img src="images/b2.jpg" />
141                 <p>飞机</p>
142                 <p>1000000</p>
143             </li>-->
144         </ul>
145     </body>
146 </html>

详情页

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        
        <script src="js/jquery-1.12.3.js"></script>
        <script>
            $(function(){
                //获取id值方法1
                //?id=101
                var id = location.search.slice(4);
                console.log(location.search)
                console.log(id); //101
                                
                //获取id值方法2
//                var strUrl = window.location.toString(); 
//                console.log(strUrl);
//                var id = strUrl .substr(strUrl .lastIndexOf("id")+3,strUrl .length-strUrl .lastIndexOf("id=")); 
//                console.log(id);//101
                
                //获取id值方法2
//                var id;
//                var reg = new RegExp("(^|&)id=([^&]*)(&|$)");
//                var r = window.location.search.substr(1).match(reg);
//                console.log(r);
//                if(r&&r.length>2){
//                    //escape() 来编码字符串,然后使用 unescape() 对其解码
//                    id = unescape(r[2]);
//                }
//                console.log(id);//101
                
                $.get("json/goods.json", function(data){
                    var arr = data.data;
                    console.log(arr);
                    
                    for(var i=0; i<arr.length; i++){
                        var boxHtml = '';
                        if(id == arr[i].id){
                            boxHtml = `    <img src=${arr[i].img} />
                                        <p>${arr[i].name}</p>
                                        <p>${arr[i].price}</p>`
                            $("#box").html(boxHtml);
                        }                    
                    }
                })
                
                //方法2
//                $.get("json/goods.json", function(reponseData){
//                    var arr = reponseData.data;
//                    for (var i=0; i<arr.length; i++){
//                        var obj = arr[i];
//                        if (id == obj.id){
//                            //console.log(obj.name);
//                            //console.log(obj.price);
//                            
//                            //此时的obj就是当前商品的信息
//                            fn(obj);
//                        }
//                    }
//                });
//                
//                function fn(obj){
//                    $("#box img").attr("src", obj.img);
//                    $("#box .name").html( obj.name );
//                    $("#box .price").html( obj.unit + obj.price );
//                }
                
            })
        </script>
    </head>
    <body>
        <h3>商品详情</h3>
        <div id="box">
            <img src="" />
            <p class="name"></p>
            <p class="price"></p>
        </div>
    </body>
</html>

购物车页

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            ul, li {list-style: none;}
            img {
                width: 40px;
                height: 30px;
            }
            .num {
                width: 40px; text-align: center;
            }
        </style>
        <script src="js/jquery-1.12.3.js"></script>
        <script src="js/jquery.cookie.js"></script>
        <script>
            $(function(){
                
                
                //刷新
                refresh();
                function refresh(){
                    //从cookie中获取购物车的数据
                    var arr = $.cookie("cart");
                    if (arr){
                        arr = JSON.parse(arr);
                        /*
                         * [
                         *    {"id":101,"name":"单车","price":1000,"unit":"¥","img":"images/1.jpg","num":2},
                         *    {"id":102,"name":"摩托","price":10000,"unit":"¥","img":"images/2.jpg","num":1}
                         * ]
                         */
                        
                        //先清空旧li节点
                        $("#list").empty();
                        
                        //添加新的li节点
                        
                        var total = 0; //总价
                        //遍历arr
                        for (var i=0; i<arr.length; i++){
                            var obj = arr[i]; //每个商品信息
                            
                            //创建li节点
                            var li = $("<li></li>").appendTo("#list");
                            if (obj.checked == true) {
                                $("<input class='check' type='checkbox' checked='checked' />").appendTo(li); //复选框选中
                            }else {
                                $("<input class='check' type='checkbox' />").appendTo(li); //复选框未选中
                            }
                            $("<img src="+ obj.img +" />").appendTo(li); //图片
                            $("<span>"+ obj.name +"</span>").appendTo(li); //商品名称
                            $("<span>"+ obj.unit+ obj.price +"</span>").appendTo(li); //商品价格
                            $("<input class='sub' type='button' value='-' />").appendTo(li); //-
                            $("<input class='num' type='text' value="+ obj.num +" />").appendTo(li); //商品数量
                            $("<input class='add' type='button' value='+' />").appendTo(li); //+
                            $("<a class='del' href='#'>删除</a>").appendTo(li); //+
                            
                            //如果当前商品选中了
                            if (obj.checked == true){
                                total += obj.price * obj.num;
                            }
                        }
                        //console.log(total);
                        $("#totalPrice").html( "¥" + total);
                    }
                    else {
                        console.log("购物车中没有数据");
                    }
                }
                
                //删除
                $("#list").on("click", ".del", function(){
                    //console.log("删除");
                    var index = $(this).index(".del");
                    //console.log(index);
                    
                    //1,修改cookie
                    var arr = JSON.parse($.cookie("cart"));
                    arr.splice(index, 1); //删除arr的第index个元素
                    $.cookie("cart", JSON.stringify(arr), {expires:30, path:"/"});
                    
                    //2,调用refresh()
                    isCheckAll();
                    refresh();
                })
                
                //+
                $("#list").on("click", ".add", function(){
                    var index = $(this).index(".add");
                    
                    var arr = JSON.parse($.cookie("cart"));
                    arr[index].num++;
                    $.cookie("cart", JSON.stringify(arr), {expires:30, path:"/"});
                    
                    refresh();
                })
                
                //-
                $("#list").on("click", ".sub", function(){
                    var index = $(this).index(".sub");
                    
                    var arr = JSON.parse($.cookie("cart"));
                    arr[index].num--;
                    if (arr[index].num <= 0){
                        arr[index].num = 1;
                    }
                    $.cookie("cart", JSON.stringify(arr), {expires:30, path:"/"});
                    
                    refresh();
                })
                
                //勾选/取消勾选
                $("#list").on("click", ".check", function(){
                    var index = $(this).index(".check");
                    
                    var arr = JSON.parse($.cookie("cart"));
                    arr[index].checked = !arr[index].checked;
                    $.cookie("cart", JSON.stringify(arr), {expires:30, path:"/"});
                    
                    isCheckAll(); 
                    refresh();
                })
                
                //点击全选
                $("#checkAll").click(function(){
                    //console.log($(this).prop("checked"));
                    
                    var arr = JSON.parse($.cookie("cart"));
                    $.each(arr, function(i) {
                        if ( $("#checkAll").prop("checked") ){//全选
                            arr[i].checked = true;
                        }
                        else { //取消全选
                            arr[i].checked = false;
                        }
                    });
                    $.cookie("cart", JSON.stringify(arr), {expires:30, path:"/"});
                    
                    refresh();
                })
                
                //判断是否全选
                //在jquery中应该使用prop方法来获取和设置checked属性,不应该使用attr。 
                isCheckAll();
                function isCheckAll(){
                    var arr = JSON.parse($.cookie("cart"));
                    
                    var sum = 0;
                    for (var i=0; i<arr.length; i++){
                        sum += arr[i].checked;
                    }
                    
                    if (arr.length == 0) {
                        $("#checkAll").prop("checked", false); 
                    }
                    else if (sum == arr.length) { //全选
                        $("#checkAll").prop("checked", true); 
                    }
                    else { //未全选
                        $("#checkAll").prop("checked", false); 
                    }
                }
                
                
                //删除选中
                $("#delSelect").click(function(){
                    /*
                    var arr = JSON.parse($.cookie("cart"));
                    for (var i=arr.length-1; i>=0; i--){
                        if (arr[i].checked == true){
                            arr.splice(i, 1);
                        }
                    }
                    $.cookie("cart", JSON.stringify(arr), {expires:30, path:"/"});
                    */
                    var arr = JSON.parse($.cookie("cart"));
                    var newArr = [];
                    for (var i=0; i<arr.length; i++){
                        if (arr[i].checked == false){
                            newArr.push(arr[i]);
                        }
                    }
                    $.cookie("cart", JSON.stringify(newArr), {expires:30, path:"/"});
                    
                    isCheckAll();
                    refresh();
                })
            })
        </script>
    </head>
    <body>
        <h2>我的购物车</h2>
        全选<input id="checkAll" type="checkbox" checked="checked" />
        <ul id="list">
            <!--<li>
                <input type="checkbox" />
                <img src="images/1.jpg" />
                <span>单车</span>
                <span>$1000</span>
                <input type="button" value="-" />
                <input class="num" type="text" value="1" />
                <input type="button" value="+" />
                <a href="#">删除</a>
            </li>
            <li>
                <input type="checkbox" />
                <img src="images/1.jpg" />
                <span>单车</span>
                <span>$1000</span>
                <input type="button" value="-" />
                <input class="num" type="text" value="1" />
                <input type="button" value="+" />
                <a href="#">删除</a>
            </li>-->
        </ul>
        <a id="delSelect" href="#">删除选中</a>
        <div>总价: <span id="totalPrice">0</span></div>
    </body>
</html>

 

posted @ 2017-09-14 15:13  铜镜123  阅读(178)  评论(0编辑  收藏  举报