• 【JavaScript_DOM 淘宝购物车】


    让我们一起看一下淘宝的购物车是怎么做的吧,刚刚入门的我可能很多地方的用法都不够优化,不过个人感觉先把逻辑清晰之后再做的话其实也并不难哦,

    以下是我做的页面代码:

    HTML代码:

      1 <!DOCTYPE html>
      2 <html>
      3     <head>
      4         <meta charset="utf-8" />
      5         <title></title>
      6         <link rel="stylesheet" href="css/index.css" />        
      7     </head>
      8     <body>
      9         <div class="container">
     10             <!--logo-->
     11             <img src="img/taobao_logo.gif" class="logo"/>
     12             <!--nav-->
     13             <div class="nav">
     14                 <span>您的位置:</span>
     15                 <a href="#" class="a">首页</a> >
     16                 <a href="#" class="a">我的淘宝</a> >
     17                 <a href="#">我的购物车</a>
     18             </div>
     19             <!--查看购物车-->
     20             <ul class="lookcar">
     21                 <li><p class="li_p">1、查看购物车</p><span class="san"></span><img src="img/ji.png" class="jianto"/></li>
     22                 <li>2、确认订单信息<img src="img/ji.png" class="jianto"/></li>
     23                 <li>3、付款到支付宝<img src="img/ji.png" class="jianto"/></li>
     24                 <li>4、确认收回<img src="img/ji.png" class="jianto"/></li>
     25                 <li>5、评价</li>
     26             </ul>
     27             <table id="shopping">
     28                 <tr class="tr_top">
     29                     <td class="td1">
     30                         <input id="checkAll" type="checkbox" value="" onclick="checkAll()"/>全选    
     31                     </td>
     32                     <td class="td2">店铺宝贝</td>
     33                     <td class="td3">获积分</td>
     34                     <td class="td4">单价(元)</td>
     35                     <td class="td5">数量</td>
     36                     <td class="td6">小计(元)</td>
     37                     <td class="td7">操作</td>
     38                 </tr>
     39                 
     40                 <!--商品1-->
     41 
     42                 <tr class="tr2">
     43                     <td colspan="7">
     44                         店铺:<span class="blue">纤巧百媚时尚鞋坊</span>  卖家:<span class="blue">纤巧百媚</span> 
     45                         <img src="img/taobao_relation.jpg"/>
     46                     </td>
     47                 </tr>                
     48                 <tr id="product1">
     49                     <td class="td1">
     50                     <input name="check" type="checkbox"  />
     51                     </td>
     52                     <td class="td2">
     53                         <img src="img/taobao_cart_01.jpg" class="img1"/>
     54                         <ul class="text">
     55                             <li>日韩流行风时尚美美独爱拼图金属坡跟<br />公主靴子黑色</li>
     56                             <li>颜色:棕色 尺码:37</li>
     57                             <li>保障: <img src="img/taobao_icon_01.jpg"/></li>
     58                         </ul>
     59                     </td>
     60                     <td class="td3" id="jf1">5</td>
     61                     <td class="td4" id="mon">138.00</td>
     62                     <td class="td5">
     63                         <img src="img/taobao_minus.jpg" onclick="onclickNum('num1','minus')"/> 
     64                         <input type="text" id="num1" class="num_input" value="1"/> 
     65                         <img src="img/taobao_adding.jpg" onclick="onclickNum('num1','add')"/>
     66                     </td>
     67                     <td class="td6" id="jg"></td>
     68                     <td class="td7"><a href="#" class="del">删除</a></td>
     69                 </tr>
     70                 <!--商品2-->
     71                 <tr class="tr2">
     72                     <td colspan="7">
     73                         店铺:<span class="blue">纤巧百媚时尚鞋坊</span>  卖家:<span class="blue">纤巧百媚</span> 
     74                         <img src="img/taobao_relation.jpg"/>
     75                     </td>
     76                 </tr>
     77                 <tr id="product2">
     78                     <td class="td1">
     79                     <input name="check" type="checkbox"  />
     80                     </td>
     81                     <td class="td2">
     82                         <img src="img/taobao_cart_02.jpg" class="img1"/>
     83                         <ul class="text">
     84                             <li>日韩流行风时尚美美独爱拼图金属坡跟<br />公主靴子黑色</li>
     85                             <li>颜色:棕色 尺码:37</li>
     86                             <li>保障: <img src="img/taobao_icon_01.jpg"/><img src="img/taobao_icon_02.jpg"/></li>
     87                         </ul>
     88                     </td>
     89                     <td class="td3" id="jf2">12</td>
     90                     <td class="td4">265.00</td>
     91                     <td class="td5">
     92                         <img src="img/taobao_minus.jpg" onclick="onclickNum('num2','minus')" /> 
     93                         <input type="text" id="num2" class="num_input" value="1"/> 
     94                         <img src="img/taobao_adding.jpg" onclick="onclickNum('num2','add')"/>
     95                     </td>
     96                     <td class="td6" id="jg2"></td>
     97                     <td class="td7"><a href="#" class="del">删除</a></td>
     98                 </tr>
     99                 
    100                 <!--商品3-->
    101                 <tr class="tr2">
    102                     <td colspan="7">
    103                         店铺:<span class="blue">纤巧百媚时尚鞋坊</span>  卖家:<span class="blue">纤巧百媚</span> 
    104                         <img src="img/taobao_relation.jpg"/>
    105                     </td>
    106                 </tr>
    107                 <tr id="product3">
    108                     <td class="td1">
    109                     <input name="check" type="checkbox" />
    110                     </td>
    111                     <td class="td2">
    112                         <img src="img/taobao_cart_03.jpg" class="img1"/>
    113                         <ul class="text">
    114                             <li>日韩流行风时尚美美独爱拼图金属坡跟<br />公主靴子黑色</li>
    115                             <li>颜色:棕色 尺码:37</li>
    116                             <li>保障: <img src="img/taobao_icon_01.jpg"/></li>
    117                         </ul>
    118                     </td>
    119                     <td class="td3" id="jf3">3</td>
    120                     <td class="td4">58.00</td>
    121                     <td class="td5">
    122                         <img src="img/taobao_minus.jpg" onclick="onclickNum('num3','minus')" /> 
    123                         <input type="text" id="num3" class="num_input" value="1"/> 
    124                         <img src="img/taobao_adding.jpg" onclick="onclickNum('num3','add')" />
    125                     </td>
    126                     <td class="td6" id="jg3"></td>
    127                     <td class="td7"><a href="#" class="del">删除</a></td>
    128                 </tr>
    129                 
    130                 <!--商品4-->
    131                 <tr class="tr2">
    132                     <td colspan="7">
    133                         店铺:<span class="blue">纤巧百媚时尚鞋坊</span>  卖家:<span class="blue">纤巧百媚</span> 
    134                         <img src="img/taobao_relation.jpg"/>
    135                     </td>
    136                 </tr>
    137                 
    138                 <tr id="product4">
    139                     <td class="td1">
    140                     <input name="check" type="checkbox"/>
    141                     </td>
    142                     <td class="td2">
    143                         <img src="img/taobao_cart_04.jpg" class="img1"/>
    144                         <ul class="text">
    145                             <li>日韩流行风时尚美美独爱拼图金属坡跟<br />公主靴子黑色</li>
    146                             <li>颜色:棕色 尺码:37</li>
    147                             <li>保障: <img src="img/taobao_icon_01.jpg"/></li>
    148                         </ul>
    149                     </td>
    150                     <td class="td3" id="jf4">12</td>
    151                     <td class="td4">12.00</td>
    152                     <td class="td5">
    153                         <img src="img/taobao_minus.jpg" onclick="onclickNum('num4','minus')" /> 
    154                         <input type="text" id="num4" class="num_input" value="1"/> 
    155                         <img src="img/taobao_adding.jpg" onclick="onclickNum('num4','add')" />
    156                     </td>
    157                     <td class="td6" id="jg4"></td>
    158                     <td class="td7"><a href="#" class="del">删除</a></td>
    159                 </tr>
    160                 
    161             </table>
    162             <a href="javascript:delAll()">
    163                 <img src="img/taobao_del.jpg" alt="delete" id="del"/>
    164             </a>
    165             
    166             <ul class="foot_rig">
    167                 <li>商品总价(不含运费):<span id="total">0</span></p>
    168                 <li><p class="li_2">可获得积分<span class="jfsum" id="integral">0</span></p></li>
    169                 <li class="li_a"><img src="img/taobao_subtn.jpg" class="buy"/></li>
    170             </ul>
    171         </div>        
    172     <script src="js/index.js"></script>
    173     </body>
    174 </html>

    CSS代码:

     1 *{margin: 0;padding: 0;}
     2 .container{width: 1000px;margin: 0 auto;}
     3 a{text-decoration:none;color: #000;}
     4 li{list-style: none;}
     5 .logo{padding-top: 10px;}
     6 .nav{height: 60px;width: 100%;line-height: 60px;font-size: 14px;}
     7 .a{color: #3a68a3;}
     8 /*查看购物车*/
     9 .lookcar{width: 100%;}
    10 .lookcar li{box-sizing:border-box;width: 20%;height: 30px;float: left;line-height: 30px;text-align: center;background: #e4e4e4;position: relative;}
    11 .li_p{float: left;width: 92%;height: 100%;background: #ff6600;}
    12 .san{width: 0;height: 0;float:left;border-top: 15px solid transparent;border-left:15px solid #ff6600 ;border-bottom: 15px solid transparent;}
    13 .jianto{position: absolute;height: 100%;right: 0;}
    14 table{width: 100%;border-collapse:collapse;}
    15 table .tr_top{height: 50px;border-bottom: 4px solid #bac9dc;}
    16 table .tr2{height: 50px;}
    17 table #product1,#product2,#product3,#product4{height: 120px;background: #e2f2ff;}
    18 table .tr3 td{border-right: 1px solid #fff;}
    19 .blue{color: #3A68A3;}
    20 .td1{width: 70px;text-align: center;}
    21 .td2{width: 400px;}
    22 .td3,.td4{width: 100px;text-align: center;}
    23 .td6{width: 100px;text-align: center;color: #FF6600;font-weight: bold;}
    24 .td5{width: 130px;text-align: center;}
    25 .td7{text-align: center;color: #3A68A3;}
    26 .img1{float: left;width: 100px;height: 100px;margin-left: 4px;}
    27 .text{float: left;padding-left: 10px;font-size:14px ;line-height: 24px;}
    28 .text li:first-child{color: #3A68A3;}
    29 .num_input{width: 30px;}
    30 .foot{width: 100%;height: 150px;}
    31 .foot_left{float: left;}
    32 #del{width: 130px;height: 30px;margin-top: 60px;}
    33 .foot_rig{width:300px;float: right;}
    34 .foot_rig li{padding: 10px 0;float: right;}
    35 .li_2{margin-left: 150px;}
    36 .sum,.jfsum{font-size:18px;font-weight: bold; color: #FF6600;}
    37 .delete{color: #3A68A3;}

    JS代码:

     1 //全选
     2 function checkAll(){
     3     var inp=document.getElementsByName("check");
     4     var ind=document.getElementById("checkAll");
     5    for(var i of inp){
     6        i.checked=ind.checked;
     7        cpCount();
     8    }
     9 }
    10 //删除一行
    11 var dels =    document.getElementsByClassName("del");
    12     for (var x of dels) {
    13         x.onclick = deleteTr;
    14     }
    15     function deleteTr(){
    16         this.parentNode.parentNode.previousSibling.previousSibling.remove()
    17         this.parentNode.parentNode.remove();
    18         cpCount();
    19     }
    20 /*删除选中行的商品*/
    21 var delss=document.getElementById('del'); //获取删除所选的按钮
    22 delss.onclick = function delec(){
    23     var inp=document.getElementsByName("check");  //获取每个多选框
    24     for (var i=inp.length-1;i>=0;i--){
    25         if(inp[i].checked == true){    
    26             inp[i].parentNode.parentNode.previousSibling.previousSibling.remove();
    27             inp[i].parentNode.parentNode.remove();
    28             inp.checked = false;
    29             cpCount();
    30         }       
    31     }
    32 }
    33 //商品数量
    34 function onclickNum(numId,count){
    35     var numId=document.getElementById(numId);
    36     if(count=="minus"){    
    37         if(numId.value<=1){
    38             alert("不能是0"); 
    39             return false;
    40             }else{
    41             numId.value=parseInt(numId.value)-1;
    42             cpCount();
    43             }
    44     }else{
    45         numId.value=parseInt(numId.value)+1;
    46         cpCount();
    47         }
    48     }
    49 //计算商品的总价和积分总
    50 function cpCount(){
    51     var total=0;      //所有商品的总计
    52     var integral=0;   //所有商品的积分    
    53     var point;      //每一行商品的单品积分
    54     var price;     //每一行商品的单价
    55     var nums;    //每一行商品的数量
    56     var subtotal;  //每一行商品的小计
    57 //找出表格中所有的行数
    58     var tableTr=document.getElementById("shopping").getElementsByTagName("tr"); 
    59     if(tableTr.length>0){
    60     for(var i=1;i<tableTr.length;i++){
    61         if(tableTr[i].getElementsByTagName("td").length>2){ //找到所有行数内的td数量大于2的行数
    62         point=tableTr[i].getElementsByTagName("td")[2].innerHTML;  //每一行商品的单品积分
    63         price=tableTr[i].getElementsByTagName("td")[3].innerHTML;  //每一行商品的单价
    64         nums=tableTr[i].getElementsByTagName("td")[4].getElementsByTagName("input")[0].value; //每一行商品的数量            
    65         integral+=point*nums;  //所有商品的积分的和 = 每一行商品的单价积分 x 数量   相加
    66         total+=price*nums;       //所有商品的总计的和 = 每一个商品的单价 x 数量   相加
    67         tableTr[i].getElementsByTagName("td")[5].innerHTML=price*nums;  //每行商品小计 =商品的单价 x 数量
    68         
    69         }
    70      
    71     }
    72     document.getElementById("total").innerHTML=total; 
    73     document.getElementById("integral").innerHTML=integral;     
    74     }
    75 }
    76 window.onload=cpCount;
    77             

    代码中如果有存在的问题希望可以帮我指出哦,当然如果有什么不会的不理解的也可以在下面问我哦~~~~~~祝大家周末愉快

  • 相关阅读:
    WindowsXP/2000来帮您自动关机
    ASP程序加密/解密方法大揭密
    教你如何在Windows XP使用定时关机命令
    向左滚动 替代 Marquee
    [转]Subversion的权限控制
    Xplanner的安装
    推荐一个不错的浮动广告代码
    微软称20日验证Windows与Office 盗版将黑屏?!
    Internet Explorer 8 Beta 2十大看点
    [转]Subversion的权限控制
  • 原文地址:https://www.cnblogs.com/zxnn/p/8324885.html
Copyright © 2020-2023  润新知