案例:购物车全选

在这里插入图片描述

<div class="c-container">
    <div class="w">
        <div class="cart-warp">
            <!-- 头部全选模块 -->
            <div class="cart-thead">
                <div class="t-checkbox">
                    <input type="checkbox" name="" id="" class="checkall"> 全选
                </div>
                <div class="t-goods">商品</div>
                <div class="t-price">单价</div>
                <div class="t-num">数量</div>
                <div class="t-sum">小计</div>
                <div class="t-action">操作</div>
            </div>
            <!-- 商品详细模块 -->
            <div class="cart-item-list">
                <div class="cart-item check-cart-item">
                    <div class="p-checkbox">
                        <input type="checkbox" name="" id="" checked class="j-checkbox">
                    </div>
                    <div class="p-goods">
                        <div class="p-img">
                            <img src="upload/p1.jpg" alt="">
                        </div>
                        <div class="p-msg">【5本26.8元】经典儿童文学彩图青少版八语文教学大纲</div>
                    </div>
                    <div class="p-price">¥12.60</div>
                    <div class="p-num">
                        <div class="quantity-form">
                            <a href="javascript:;" class="decrement">-</a>
                            <input type="text" class="itxt" value="1">
                            <a href="javascript:;" class="increment">+</a>
                        </div>
                    </div>
                    <div class="p-sum">¥12.60</div>
                    <div class="p-action"><a href="javascript:;">删除</a></div>
                </div>
                <div class="cart-item">
                    <div class="p-checkbox">
                        <input type="checkbox" name="" id="" class="j-checkbox">
                    </div>
                    <div class="p-goods">
                        <div class="p-img">
                            <img src="upload/p2.jpg" alt="">
                        </div>
                        <div class="p-msg">【2000张贴纸】贴纸书 3-全套画 贴纸儿童 汽</div>
                    </div>
                    <div class="p-price">¥24.80</div>
                    <div class="p-num">
                        <div class="quantity-form">
                            <a href="javascript:;" class="decrement">-</a>
                            <input type="text" class="itxt" value="1">
                            <a href="javascript:;" class="increment">+</a>
                        </div>
                    </div>
                    <div class="p-sum">¥24.80</div>
                    <div class="p-action"><a href="javascript:;">删除</a></div>
                </div>
                <div class="cart-item">
                    <div class="p-checkbox">
                        <input type="checkbox" name="" id="" class="j-checkbox">
                    </div>
                    <div class="p-goods">
                        <div class="p-img">
                            <img src="upload/p3.jpg" alt="">
                        </div>
                        <div class="p-msg">唐诗三百首+二外籍</div>
                    </div>
                    <div class="p-price">¥29.80</div>
                    <div class="p-num">
                        <div class="quantity-form">
                            <a href="javascript:;" class="decrement">-</a>
                            <input type="text" class="itxt" value="1">
                            <a href="javascript:;" class="increment">+</a>
                        </div>
                    </div>
                    <div class="p-sum">¥29.80</div>
                    <div class="p-action"><a href="javascript:;">删除</a></div>
                </div>
            </div>

            <!-- 结算模块 -->
            <div class="cart-floatbar">
                <div class="select-all">
                    <input type="checkbox" name="" id="" class="checkall">全选
                </div>
                <div class="operation">
                    <a href="javascript:;" class="remove-batch"> 删除选中的商品</a>
                    <a href="javascript:;" class="clear-all">清理购物车</a>
                </div>
                <div class="toolbar-right">
                    <div class="amount-sum">已经选<em>1</em>件商品</div>
                    <div class="price-sum">总价: <em>¥12.60</em></div>
                    <div class="btn-area">去结算</div>
                </div>
            </div>
        </div>
    </div>
</div>
$(function() {
    $(".checkall").change(function() {
        $(".j-checkbox, .checkall").prop("checked", $(this).prop("checked"));
    });
    
    $(".j-checkbox").change(function() {
        if ($(".j-checkbox:checked").length === $(".j-checkbox").length) {
            $(".checkall").prop("checked", true);
        } else {
            $(".checkall").prop("checked", false);
        }
    });
})
很高兴为您提供购物车功能的HTML代码实现,以下是完整的HTML代码: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>购物车</title> </head> <body> <h1>购物车</h1> <table> <thead> <tr> <th><input type="checkbox" id="check-all"></th> <th>商品名称</th> <th>单价</th> <th>数量</th> <th>小计</th> <th>操作</th> </tr> </thead> <tbody> <tr> <td><input type="checkbox" class="check-item"></td> <td>商品1</td> <td>10</td> <td><button class="reduce-btn">-</button><span class="count">1</span><button class="add-btn">+</button></td> <td class="subtotal">10</td> <td><button class="delete-btn">删除</button></td> </tr> <tr> <td><input type="checkbox" class="check-item"></td> <td>商品2</td> <td>20</td> <td><button class="reduce-btn">-</button><span class="count">1</span><button class="add-btn">+</button></td> <td class="subtotal">20</td> <td><button class="delete-btn">删除</button></td> </tr> <tr> <td><input type="checkbox" class="check-item"></td> <td>商品3</td> <td>30</td> <td><button class="reduce-btn">-</button><span class="count">1</span><button class="add-btn">+</button></td> <td class="subtotal">30</td> <td><button class="delete-btn">删除</button></td> </tr> </tbody> <tfoot> <tr> <td colspan="6"> <button id="delete-all-btn">删除选中商品</button> <span>总计:<span id="total-count">0</span>件商品,总额:<span id="total-price">0</span>元</span> </td> </tr> </tfoot> </table> <script> var checkAll = document.getElementById('check-all') var checkItems = document.getElementsByClassName('check-item') var reduceBtns = document.getElementsByClassName('reduce-btn') var addBtns = document.getElementsByClassName('add-btn') var deleteBtns = document.getElementsByClassName('delete-btn') var deleteAllBtn = document.getElementById('delete-all-btn') var totalCount = document.getElementById('total-count') var totalPrice = document.getElementById('total-price') // 全选 checkAll.onclick = function() { for (var i = 0; i < checkItems.length; i++) { checkItems[i].checked = this.checked } getTotal() } // 单选 for (var i = 0; i < checkItems.length; i++) { checkItems[i].onclick = function() { var flag = true for (var j = 0; j < checkItems.length; j++) { if (!checkItems[j].checked) { flag = false break } } checkAll.checked = flag getTotal() } } // 增加数量 for (var i = 0; i < addBtns.length; i++) { addBtns[i].onclick = function() { var countInput = this.parentNode.querySelector('.count') var count = parseInt(countInput.innerText) count++ countInput.innerText = count getSubtotal(this.parentNode.parentNode) getTotal() } } // 减少数量 for (var i = 0; i < reduceBtns.length; i++) { reduceBtns[i].onclick = function() { var countInput = this.parentNode.querySelector('.count') var count = parseInt(countInput.innerText) if (count > 1) { count-- countInput.innerText = count getSubtotal(this.parentNode.parentNode) } getTotal() } } // 计算小计 function getSubtotal(tr) { var price = tr.querySelector('td:nth-child(3)').innerText var count = tr.querySelector('.count').innerText var subtotal = parseInt(price) * parseInt(count) tr.querySelector('.subtotal').innerText = subtotal } // 删除商品 for (var i = 0; i < deleteBtns.length; i++) { deleteBtns[i].onclick = function() { var tr = this.parentNode.parentNode tr.parentNode.removeChild(tr) getTotal() } } // 删除选中商品 deleteAllBtn.onclick = function() { for (var i = 0; i < checkItems.length; i++) { if (checkItems[i].checked) { var tr = checkItems[i].parentNode.parentNode tr.parentNode.removeChild(tr) i-- } } getTotal() } // 计算总计和总额 function getTotal() { var totalCountNum = 0 var totalPriceNum = 0 for (var i = 0; i < checkItems.length; i++) { if (checkItems[i].checked) { var tr = checkItems[i].parentNode.parentNode var count = parseInt(tr.querySelector('.count').innerText) var price = parseInt(tr.querySelector('.subtotal').innerText) totalCountNum += count totalPriceNum += price } } totalCount.innerText = totalCountNum totalPrice.innerText = totalPriceNum } </script> </body> </html> ``` 该购物车功能实现了以下功能: 1. 全选/取消全选; 2. 单选/取消单选; 3. 增加/减少商品数量; 4. 计算商品小计; 5. 删除单个商品; 6. 删除选中商品; 7. 计算总计和总额。 您可以在浏览器中打开该HTML文件,进行购物车功能的使用和测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值