1. 程式人生 > >原生JS實現購物車的新增刪除,以及總價計算的功能

原生JS實現購物車的新增刪除,以及總價計算的功能

add方法,傳入一個引數items。items是一個數組,陣列元素為{name:String,price:Number}。通過add方法可以在在購物車列表新增商品

bind方法,實現點選刪除,能夠刪除對應的列

同時,注意總計的商品總價應該符合邏輯計算,所有價錢應該保留小數點後2位。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <table id="jsTrolley">
      <thead><tr><th>名稱</th><th>價格</th><th>操作</th></tr></thead>
      <tbody>
          <tr><td>產品1</td><td>10.00</td><td><a href="javascript:void(0);">刪除</a></td></tr>
          <tr><td>產品2</td><td>30.20</td><td><a href="javascript:void(0);">刪除</a></td></tr>
          <tr><td>產品3</td><td>20.50</td><td><a href="javascript:void(0);">刪除</a></td></tr>
      </tbody>
      <tfoot><tr><th>總計</th><td colspan="2">60.70(3件商品)</td></tr></tfoot>
  </table>
  </body>
  <script type="text/javascript">
  function add(items) {
   var sum = 0,
       num = 0,
       html = "",
       table = document.getElementById("jsTrolley"),
       tbody = table.getElementsByTagName("tbody")[0],
       tfoot = table.getElementsByTagName('tfoot')[0],
       tr = tbody.getElementsByTagName("tr");
       price = tfoot.getElementsByTagName('td')[0];
   for (var i = 0; i < tr.length; i++) {
     var a = tr[i].getElementsByTagName('td')[1];
     sum += parseFloat(a.innerHTML);
   }
   for(var i =0;i<items.length;i++){
     sum += items[i].price;
     html += "<tr><td>"+items[i].name+"</td><td>"+items[i].price.toFixed(2)+"</td><td><a href='javascript:void(0);'>刪除</a></td></tr>";
   }
   html = tbody.innerHTML+html;
   tbody.innerHTML = html;

   num = tbody.getElementsByTagName("tr").length;
   price.innerHTML = sum.toFixed(2)+"("+num+"件商品)";

 }
add([{name:"dd",price:11.00},{name:"ddd",price:55.0}]);
function bind() {
    function fn(){
      var node = this.parentNode.parentNode;
      node.parentNode.removeChild(node);
      var sum = 0,num=0;
      var tbody = document.getElementById("jsTrolley").getElementsByTagName("tbody")[0];
      var tr = tbody.getElementsByTagName("tr");
      for (var i = 0; i < tr.length; i++) {
        var a = tr[i].getElementsByTagName('td')[1];
        sum += parseFloat(a.innerHTML);
        num++;
      }
      num = tbody.getElementsByTagName("tr").length;
      price.innerHTML = sum.toFixed(2)+"("+num+"件商品)";
    }
    var del = document.getElementById("jsTrolley").getElementsByTagName("a");
    for (var i = 0; i < del.length; i++) {
      del[i].onclick = fn;
    }
}
bind();
  </script>
</html>