一个简单的购物车结算js分享

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39967349/article/details/77891435
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>购物车结算</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
<meta name="format-detection" content="telephone=no"/>
<meta name="renderer" content="webkit">
<!--<![endif]-->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<style>
 .shop-total, 
 .all-total {
    height: 50px;
    line-height: 50px;
    font-weight: bold;
    color: #f00;
    float: left;
}

.one-shop, 
 .all-total, 
 .shop-total {
    width: 400px;
}

p {
    margin: 0;
}

.goods-check {
    width: 25px;
    height: 25px;
    margin-top: 5px;
}

.goods-msg, 
 p, 
 label {
    float: left;
} 
</style>
</head>
<body>
<!-- 一个店铺 -->
<div class="one-shop">
    <!-- 一个商品 -->
    <div class="one-goods">
        <div class="goods-msg">
            <label for="">
            <input type="checkbox" class="goods-check GoodsCheck">
            </label>
            <button type="button" class="minus">-</button>
            <input type="text" class="am-num-text" value="1"/>
            <button type="button" class="plus">+</button>
        </div>
        <p>
            商品单价:¥<span class="shop-total-amount GoodsPrice">20.00</span>
        </p>
    </div>
    <!-- 一个商品 -->
    <div class="one-goods">
        <div class="goods-msg">
            <label for="">
            <input type="checkbox" class="goods-check GoodsCheck">
            </label>
            <button type="button" class="minus">-</button>
            <input type="text" class="am-num-text" value="1"/>
            <button type="button" class="plus">+</button>
        </div>
        <p>
            商品单价:¥<span class="shop-total-amount GoodsPrice">9.90</span>
        </p>
    </div>
    <!-- 一个商品 -->
    <div class="one-goods">
        <div class="goods-msg ">
            <label for="">
            <input type="checkbox" class="goods-check GoodsCheck">
            </label>
            <button type="button" class="minus">-</button>
            <input type="text" class="am-num-text" value="1"/>
            <button type="button" class="plus">+</button>
        </div>
        <p>
            商品单价:¥<span class="shop-total-amount GoodsPrice">10.00</span>
        </p>
    </div>
    <!-- 店铺合计 -->
    <div class="shop-total">
        <label for="">
        <input type="checkbox" class="goods-check ShopCheck">店铺全选 </label>
        <p>
            本店合计:¥<span class="shop-total-amount ShopTotal">0</span>
        </p>
    </div>
</div>
<!-- 一个店铺 -->
<div class="one-shop">
    <!-- 一个商品 -->
    <div class="one-goods">
        <div class="goods-msg">
            <label for="">
            <input type="checkbox" class="goods-check GoodsCheck">
            </label>
            <button type="button" class="minus">-</button>
            <input type="text" class="am-num-text" value="1"/>
            <button type="button" class="plus">+</button>
        </div>
        <p>
            商品单价:¥<span class="shop-total-amount GoodsPrice">30.00</span>
        </p>
    </div>
    <!-- 一个商品 -->
    <div class="one-goods">
        <div class="goods-msg">
            <label for="">
            <input type="checkbox" class="goods-check GoodsCheck">
            </label>
            <button type="button" class="minus">-</button>
            <input type="text" class="am-num-text" value="1"/>
            <button type="button" class="plus">+</button>
        </div>
        <p>
            商品单价:¥<span class="shop-total-amount GoodsPrice">20.00</span>
        </p>
    </div>
    <!-- 店铺合计 -->
    <div class="shop-total">
        <label for="">
        <input type="checkbox" class="goods-check ShopCheck">店铺全选 </label>
        <p>
            本店合计:¥<span class="shop-total-amount ShopTotal">0</span>
        </p>
    </div>
</div>
<!-- 总计 -->
<div class="all-total">
    <label for="">
    <input type="checkbox" class="goods-check" id="AllCheck">全选 </label>
    <p>
        总价合计:¥<span class="shop-total-amount" id="AllTotal">0</span>
    </p>
</div>
<script src="http://code.jquery.com/jquery-2.2.0.min.js"></script>
<script> 
 // 数量减 
 $(".minus").click(function() {
    var t = $(this).parent().find('.am-num-text');
    t.val(parseInt(t.val()) - 1);
    if (t.val() <= 1) {
        t.val(1);
    }
    TotalPrice();
});
// 数量加 
$(".plus").click(function() {
    var t = $(this).parent().find('.am-num-text');
    t.val(parseInt(t.val()) + 1);
    if (t.val() <= 1) {
        t.val(1);
    }
    TotalPrice();
});
// 点击商品按钮 
$(".GoodsCheck").click(function() {
    var goods = $(this).closest(".one-shop").find(".GoodsCheck"); //获取本店铺的所有商品 
    var goodsC = $(this).closest(".one-shop").find(".GoodsCheck:checked"); //获取本店铺所有被选中的商品 
    var Shops = $(this).closest(".one-shop").find(".ShopCheck"); //获取本店铺的全选按钮 
    if (goods.length == goodsC.length) { //如果选中的商品等于所有商品 
        Shops.prop('checked', true); //店铺全选按钮被选中 
        if ($(".ShopCheck").length == $(".ShopCheck:checked").length) { //如果店铺被选中的数量等于所有店铺的数量 
            $("#AllCheck").prop('checked', true); //全选按钮被选中 
            TotalPrice();
        } else {
            $("#AllCheck").prop('checked', false); //else全选按钮不被选中 
            TotalPrice();
        }
    } else { //如果选中的商品不等于所有商品 
        Shops.prop('checked', false); //店铺全选按钮不被选中 
        $("#AllCheck").prop('checked', false); //全选按钮也不被选中 
        // 计算 
        TotalPrice();
        // 计算 
    }
});
// 点击店铺按钮 
$(".ShopCheck").change(function() {
    if ($(this).prop("checked") == true) { //如果店铺按钮被选中 
        $(this).parents(".one-shop").find(".goods-check").prop('checked', true); //店铺内的所有商品按钮也被选中 
        if ($(".ShopCheck").length == $(".ShopCheck:checked").length) { //如果店铺被选中的数量等于所有店铺的数量 
            $("#AllCheck").prop('checked', true); //全选按钮被选中 
            TotalPrice();
        } else {
            $("#AllCheck").prop('checked', false); //else全选按钮不被选中 
            TotalPrice();
        }
    } else { //如果店铺按钮不被选中 
        $(this).parents(".one-shop").find(".goods-check").prop('checked', false); //店铺内的所有商品也不被全选 
        $("#AllCheck").prop('checked', false); //全选按钮也不被选中 
        TotalPrice();
    }
});
// 点击全选按钮 
$("#AllCheck").click(function() {
    if ($(this).prop("checked") == true) { //如果全选按钮被选中 
        $(".goods-check").prop('checked', true); //所有按钮都被选中 
        TotalPrice();
    } else {
        $(".goods-check").prop('checked', false); //else所有按钮不全选 
        TotalPrice();
    }
    $(".ShopCheck").change(); //执行店铺全选的操作 
});

function TotalPrice() {
    var allprice = 0; //总价 
    $(".one-shop").each(function() { //循环每个店铺 
        var oprice = 0; //店铺总价 
        $(this).find(".GoodsCheck").each(function() { //循环店铺里面的商品 
            if ($(this).is(":checked")) { //如果该商品被选中 
                var num = parseInt($(this).parents(".one-goods").find(".am-num-text").val()); //得到商品的数量 
                var price = parseFloat($(this).parents(".one-goods").find(".GoodsPrice").text()); //得到商品的单价 
                var total = price * num; //计算单个商品的总价 
                oprice += total; //计算该店铺的总价 
            }
            $(this).closest(".one-shop").find(".ShopTotal").text(oprice.toFixed(2)); //显示被选中商品的店铺总价 
        });
        var oneprice = parseFloat($(this).find(".ShopTotal").text()); //得到每个店铺的总价 
        allprice += oneprice; //计算所有店铺的总价 
    });
    $("#AllTotal").text(allprice.toFixed(2)); //输出全部总价 
}
 </script>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_39967349/article/details/77891435