zoukankan      html  css  js  c++  java
  • JS实现购物车02

    需求
    使用JS实现购物车功能02

    具体代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>购物车02</title>
    </head>
    <body>
    <table align="center" border="2" id = "shop">
    <tr>
    <th colspan="4" align="center">商品列表<input id="add" type="button" value="一键上架"></th>
    </tr>
    <tr>
    <th>商品序号</th>
    <th>商品名称</th>
    <th>出售价格</th>
    <th>操作</th>
    </tr>
    </table>
    <br>
    <br>
    <br>
    <br>
    <br>
    <table align="center" border="2" id = "cart">
    <tr>
    <th colspan="4" align="center">购物车<input id="clear" type="button" value="一键清空"></th>
    </tr>
    <tr>
    <th>商品名称</th>
    <th>商品价格</th>
    <th>商品数量</th>
    <th>操作</th>
    </tr>
    </table>
    
    
    <h3 id="total" align="center">总价: ¥0.0</h3>
    
    
    <script type="text/javascript">
    var goods_name = ["阿尔卑斯棒棒糖","耳机","北京糖葫芦","智能扫地机器人"];
    var goods_price = ["1.5","30","5","258"];
    //一键上架
    var add = document.getElementById("add");
    add.onclick = function(){
    var shop =  document.getElementById("shop");
    for(var i = 0; i< goods_name.length;i++){
    var row = shop.insertRow();
    row.insertCell().innerHTML = i + 1;
    row.insertCell().innerHTML = goods_name[i];
    row.insertCell().innerHTML = "¥" + goods_price[i];
    row.insertCell().innerHTML = "<button id='" + i + "' onclick='addCart(this);'>加入购物车</button>";
    }
    this.setAttribute("disabled", true);
    }
    
    
    var cartData = {
    
    
    }
    
    
    var index = 0;
    //准备加入购物车的数据
    function addCart(btn) {
    
    
    var gname = goods_name[btn.id];
    var gobj = cartData[gname];
    
    if(!gobj){//没有数据
    //新增一条数据
    cartData[goods_name[btn.id]] = {
    id:btn.id,
    count:1,
    index:index++
    }
    }else{
    cartData[goods_name[btn.id]].count++;
    }
    //console.log(cartData);
    showCart(cartData);
    }
    //加入购物车
    function showCart(obj){
    clearCart();
    getTotal(obj);
    var cart = document.getElementById("cart");
    for(var k in obj){
    var row = cart.insertRow();
    row.insertCell().innerHTML = k;
    row.insertCell().innerHTML = "¥" + goods_price[obj[k].id];
    row.insertCell().innerHTML = obj[k].count;
    row.insertCell().innerHTML = "<button id='" + k + "' onclick='deleteRow(this);'>删除</button>";
    }
    }
    //清空购物车
    var clear = document.getElementById("clear");
    clear.onclick = function(){
    clearCart();
    cartData = {};
    }
    //清空购物车的方法
    function clearCart(){
    var cart = document.getElementById("cart");
    var rows = cart.rows;
    for(var i = rows.length - 1 ; i > 1 ; i--){
    cart.deleteRow(i);
    }
    total = 0.0;
    //更新总价
    document.getElementById("total").innerHTML = "总价:¥" + total;
    }
    
    
    var total = 0.0;
    //得到总价
    function getTotal(obj){
    
    for(var k in obj){
    var subTotal = goods_price[obj[k].id] * obj[k].count;
    total += subTotal;
    }
    //更新总价
    document.getElementById("total").innerHTML = "总价:¥" + total;
    
    
    }
    
    
    //删除整行
    function deleteRow(btn){
    var cart = document.getElementById("cart");
    var rowIndex = btn.parentNode.parentNode.rowIndex;
    cart.deleteRow(rowIndex);
    delete cartData[btn.id];
    total = 0.0;
    getTotal(cartData);
    } 
    
    
    </script>
    </body>
    </html>

    效果图
    样式比较丑,不要介意哈

  • 相关阅读:
    TensorFLow手写字识别深度学习网络分析详解
    使用MSBUILD 构建时出错 error MSB3086: 任务未能使用 SdkToolsPath“”或注册表项“XXX”找到“LC.exe”,请确保已设置 SdkToolsPath。
    解决Win7启动时出现“windows未能启动。原因可能是最近更改了硬件或软件”的问题
    SSH安装篇之——SecureCRT连接(内网和外网)虚拟机中的Linux系统(Ubuntu)
    git push 冲突
    ubuntu快捷键收集
    ubuntu中wine下安装QQ
    ubuntu下安装无线网卡去驱动Qualcomm-Atheros-QCA9377
    spring mvc添加静态资源访问时@Controller无效的解决
    git更新到远程服务器代码
  • 原文地址:https://www.cnblogs.com/yidaixiaohui/p/10209979.html
Copyright © 2011-2022 走看看