zoukankan      html  css  js  c++  java
  • 网上图书商城项目学习笔记-014购物车模块页面javascrip

    一、流程分析

    二、代码

    1.view层

    (1)list.jsp

     

      1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
      2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      3 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
      4 
      5  
      6 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      7 <html>
      8   <head>
      9     <title>cartlist.jsp</title>
     10     
     11     <meta http-equiv="pragma" content="no-cache">
     12     <meta http-equiv="cache-control" content="no-cache">
     13     <meta http-equiv="expires" content="0">    
     14     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
     15     <meta http-equiv="description" content="This is my page">
     16     <!--
     17     <link rel="stylesheet" type="text/css" href="styles.css">
     18     -->
     19     <script src="<c:url value='/jquery/jquery-2.2.0.js'/>"></script>
     20     <script src="<c:url value='/js/round.js'/>"></script>
     21     
     22     <link rel="stylesheet" type="text/css" href="<c:url value='/jsps/css/cart/list.css'/>">
     23 <script>
     24 $(function(){
     25     showTotal();
     26       initCheckBox();
     27       initCheckAll();
     28       initJia();
     29       initJian();
     30 });
     31 
     32 /*
     33 给全选添加click事件
     34 */
     35 function initCheckAll() {
     36     $("#selectAll").click(function() {
     37         var bool = $(this).prop("checked");
     38         $("input[type=checkbox][name=checkboxBtn]").prop("checked", bool);
     39         setJieSuan(bool);
     40         showTotal();
     41     });
     42 }
     43 /*
     44 给所有条目的复选框添加click事件
     45 */
     46 function initCheckBox() {
     47     $("input[type=checkbox][name=checkboxBtn]").click(function() {
     48         var all = $("input[type=checkbox][name=checkboxBtn]").length;//所有条目的个数
     49         var selected = $("input[type=checkbox][name=checkboxBtn]:checked").length;
     50         var selectAll = $("#selectAll");
     51         if(all == selected) {//全都选中
     52             selectAll.prop("checked", true);
     53             setJieSuan(true);//让结算按钮有效
     54         } else if(selected == 0) {//全都没选中
     55             selectAll.prop("checked", false);
     56             setJieSuan(false);
     57         } else {
     58             selectAll.prop("checked", false);
     59             setJieSuan(true);
     60         }
     61         showTotal();
     62     });
     63 }
     64 
     65 /*
     66  * 设置结算按钮样式
     67  */
     68  function setJieSuan(bool) {
     69      var jiesuan = $("#jiesuan");
     70      if(bool) {
     71          jiesuan.removeClass("kill").addClass("jiesuan");
     72          jiesuan.unbind("click");//撤消当前元素的所有click事件
     73      } else {
     74          jiesuan.removeClass("jiesuan").addClass("kill");
     75          jiesuan.click(function() {return false});
     76      }
     77  }
     78  
     79  /*
     80  * 计算总计
     81  */
     82  function showTotal() {
     83      var total = 0;
     84      var id;
     85      var text;
     86      $("input[type=checkbox][name=checkboxBtn]:checked").each(function( index, domEle) {
     87          id = $(domEle).val();
     88          text = $("#" + id + "Subtotal").text();
     89          total += Number(text);
     90      });
     91      $("#total").text(total);
     92  }
     93  
     94  // 给加号添加click事件
     95  function initJia() {
     96      $(".jia").click(function() {
     97          var id = $(this).prop("id").substring(0, 32);
     98          var quantity = $("#" + id + "Quantity").val();
     99          sendUpdateQuantity(id, Number(quantity) + 1);
    100      });
    101  }
    102  
    103  // 给减号添加click事件
    104  function initJian() {
    105      $(".jian").click(function() {
    106          var id = $(this).prop("id").substring(0, 32);
    107          var quantity = $("#" + id + "Quantity").val();
    108          // 判断当前数量是否为1,如果为1,那就不是修改数量了,而是要删除了。
    109          if(quantity == 1){
    110              if(confirm("您是否真要删除该条目?"))
    111                  location = "/goods/CartItemServlet?method=batchDelete&cartItemIds=" + id;
    112          } else {
    113              sendUpdateQuantity(id, quantity-1);
    114          }
    115      });
    116  }
    117  
    118 // 请求服务器,修改数量。
    119 function sendUpdateQuantity(id, quantity) {
    120     $.ajax({
    121         async : false,
    122         cache : false,
    123         url : "/goods/CartItemServlet",
    124         data : {method:"updateQuantity", cartItemId:id, quantity:quantity},
    125         type : "POST",
    126         dataType : "json",
    127     }).done(function(data) {
    128         $("#" + id + "Quantity").val(data.quantity);
    129         $("#" + id + "Subtotal").text(data.subtotal);
    130         showTotal();
    131     });
    132 }
    133 </script>
    134   </head>
    135   <body>
    136 
    137 <c:choose>
    138     <c:when test="${empty items }">
    139     <table width="95%" align="center" cellpadding="0" cellspacing="0">
    140         <tr>
    141             <td align="right">
    142                 <img align="top" src="<c:url value='/images/icon_empty.png'/>"/>
    143             </td>
    144             <td>
    145                 <span class="spanEmpty">您的购物车中暂时没有商品</span>
    146             </td>
    147         </tr>
    148     </table>  
    149 </c:when>
    150 
    151 <c:otherwise>
    152 <table width="95%" align="center" cellpadding="0" cellspacing="0">
    153     <tr align="center" bgcolor="#efeae5">
    154         <td align="left" width="50px">
    155             <input type="checkbox" id="selectAll" checked="checked"/><label for="selectAll">全选</label>
    156         </td>
    157         <td colspan="2">商品名称</td>
    158         <td>单价</td>
    159         <td>数量</td>
    160         <td>小计</td>
    161         <td>操作</td>
    162     </tr>
    163 
    164 <c:forEach items="${items }" var="item">
    165 
    166     <tr align="center">
    167         <td align="left">
    168             <input value="${item.cartItemId }" type="checkbox" name="checkboxBtn" checked="checked"/>
    169         </td>
    170         <td align="left" width="70px">
    171             <a class="linkImage" href="<c:url value='/BookServlet?method=load&bid=${item.book.bid }'/>"><img border="0" width="54" align="top" src="<c:url value='${item.book.image_b }'/>"/></a>
    172         </td>
    173         <td align="left" width="400px">
    174             <a href="<c:url value='/BookServlet?method=load&bid=${item.book.bid }'/>"><span>${item.book.bname }</span></a>
    175         </td>
    176         <td><span>&yen;<span class="currPrice" id="${item.cartItemId }CurrPrice">${item.book.currPrice }</span></span></td>
    177         <td>
    178             <a class="jian" id="${item.cartItemId }Jian"></a><input class="quantity" readonly="readonly" id="${item.cartItemId }Quantity" type="text" value="${item.quantity }"/><a class="jia" id="${item.cartItemId }Jia"></a>
    179         </td>
    180         <td width="100px">
    181             <span class="price_n">&yen;<span class="subTotal" id="${item.cartItemId }Subtotal">${item.getSubtotal() }</span></span>
    182         </td>
    183         <td>
    184             <a href="<c:url value='/CartItemServlet?method=batchDelete&cartItemIds=${item.cartItemId }'/>">删除</a>
    185         </td>
    186     </tr>
    187 </c:forEach>
    188     
    189     <tr>
    190         <td colspan="4" class="tdBatchDelete">
    191             <a href="javascript:batchDelete();">批量删除</a>
    192         </td>
    193         <td colspan="3" align="right" class="tdTotal">
    194             <span>总计:</span><span class="price_t">&yen;<span id="total"></span></span>
    195         </td>
    196     </tr>
    197     <tr>
    198         <td colspan="7" align="right">
    199             <a href="javascript:jiesuan();" id="jiesuan" class="jiesuan"></a>
    200         </td>
    201     </tr>
    202 </table>
    203     <form id="jieSuanForm" action="<c:url value='/CartItemServlet'/>" method="post">
    204         <input type="hidden" name="cartItemIds" id="cartItemIds"/>
    205         <input type="hidden" name="total" id="hiddenTotal"/>
    206         <input type="hidden" name="method" value="loadCartItems"/>
    207     </form>
    208 </c:otherwise>    
    209 </c:choose>
    210 
    211   </body>
    212 </html>

    (2)round.js

     1 function round(num,dec){ 
     2     var strNum = num + '';/*把要转换的小数转换成字符串*/
     3     var index = strNum.indexOf("."); /*获取小数点的位置*/
     4     if(index < 0) {
     5         return num;/*如果没有小数点,那么无需四舍五入,返回这个整数*/
     6     }
     7     var n = strNum.length - index -1;/*获取当前浮点数,小数点后的位数*/
     8     if(dec < n){ 
     9         /*把小数点向后移动要保留的位数,把需要保留的小数部分变成整数部分,只留下不需要保留的部分为小数*/ 
    10         var e = Math.pow(10, dec);
    11         num = num * e;
    12         /*进行四舍五入,只保留整数部分*/
    13         num = Math.round(num);
    14         /*再把原来小数部分还原为小数*/
    15         return num / e;
    16     } else { 
    17         return num;/*如果当前小数点后的位数等于或小于要保留的位数,那么无需处理,直接返回*/
    18     } 
    19 } 

     

  • 相关阅读:
    慕课网-安卓工程师初养成-1-4 练习题
    慕课网-安卓工程师初养成-1-3 使用记事本编写Java程序
    慕课网-安卓工程师初养成-1-2 开发环境搭建
    慕课网-安卓工程师初养成-1-1 Java简介
    安卓开发菜鸟初学
    Java编程——输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
    JSP三种常用注释
    语录——(摘自应届毕业生网)
    Servlet基础知识
    建议网站购物——建立一个简易购物网站,包括登录页面、商品选择页面和结账页面。
  • 原文地址:https://www.cnblogs.com/shamgod/p/5168623.html
Copyright © 2011-2022 走看看