• 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                  100px;
     10                 height: 230px;
     11                 border: 1px solid gray;
     12                 float: left;
     13                 margin-left: 10px;
     14                 cursor: pointer;
     15             }
     16             li img {
     17                  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 {
                     40px;
                    height: 30px;
                }
                .num {
                     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>
  • 相关阅读:
    java爬取Excel表格
    drf-view
    django--View
    tornado的Application的一些事儿
    tornado的路由分发
    线程和asyncio的比较
    GIL
    else的使用
    协程
    生成器代替迭代器
  • 原文地址:https://www.cnblogs.com/1032473245jing/p/7520840.html
Copyright © 2020-2023  润新知