jq實現簡單購物車增刪功能


https://www.cnblogs.com/sandraryan/

jq實現購物車功能

點擊+- 增減數量,計算價格;

點擊刪除,刪除當前行(商品)

點擊- ,減到0 詢問是否刪除商品

點擊全選 計算總價(商品只有被選中才能計算總價)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        div,
        ul,
        li {
            margin: 0;
            padding: 0;
        }

        #wrap {
            width: 782px;
            box-shadow: 0 0 10px lightblue;
            margin: 100px auto;
            text-align: center;
        }

        li {
            font-size: 20px;
            color: gray;
            width: 100px;
            height: 24px;
            line-height: 30px;
            list-style: none;
            border: 1px solid lightgray;
            float: left;
            padding: 10px;
        }

        ul {
            height: 46px;
            display: block;
            margin: 0 auto;
            clear: both;
            background-color: rgb(212, 241, 250);
        }

        .num {
            width: 150px;
        }

        .num input {
            width: 30px;
            text-align: center;
        }

        .total {
            clear: both;
            text-align: right;
            padding: 10px;
            font-size: 20px;
            color: red;
        }

        ul span {
            border: 1px solid lightgray;
            padding: 2px 10px;
            border-radius: 5px;
            /* background-color: lightgray; */
            color: gray;
        }
    </style>
</head>

<body>
    <div id="wrap">
        <ul>
            <li><input name='all' type='checkbox'>all</li>
            <li>name</li>
            <li>price</li>
            <li class="num">number</li>
            <li>add</li>
            <li>operation</li>
        </ul>
        <ul>
            <li><input type="checkbox" name='one'>one</li>
            <li>phone</li>
            <li>1000.00</li>
            <li class='num'>
                <input type="button" value='-'>
                <input type="text" name='num' value="1">
                <input type="button" value='+'>
            </li>
            <li class="price">1000.00</li>
            <li><span>delete</span></li>
        </ul>
        <ul>
            <li><input type="checkbox" name='one'>one</li>
            <li>phone</li>
            <li>1000.00</li>
            <li class='num'>
                <input type="button" value='-'>
                <input type="text" name='num' value="1">
                <input type="button" value='+'>
            </li>
            <li class="price">1000.00</li>
            <li><span>delete</span></li>
        </ul>
        <ul>
            <li><input type="checkbox" name='one'>one</li>
            <li>phone</li>
            <li>1000.00</li>
            <li class='num'>
                <input type="button" value='-'>
                <input type="text" name='num' value="1">
                <input type="button" value='+'>
            </li>
            <li class="price">1000.00</li>
            <li><span>delete</span></li>
        </ul>
        <div class="total">total: <span> 0.00 </span></div>
    </div>

    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
    <script>
        // 計算總價的函數
        function calcTotal() {
            // 設置總價初始值
            var total = 0;
            // 獲取所有name為one的input框
            var allOne = $('input[name = "one"]');
            // 獲取單價
            var price = $('.price');
            // name為one的input框,如果被選中了,計算總價
            allOne.each(function () {
                if ($(this).prop('checked')) {
                    // 獲取當前索引
                    var i = allOne.index($(this));
                    // eq()返回帶有被選元素的索引
                    total += parseFloat(price.eq(i).text());
                }
            });
            // 總價的值寫在頁面上
            $('.total span').text(total);
        }


        $(function () {
            // 獲取ul里面的span(刪除鍵),注冊點擊事件
            $('ul span').click(function () {
                // 彈出輸入框,如果用戶點擊了確認,返回true
                if (confirm('you delete your mother ne????')) {
                    // 刪除當前刪除鍵坐在的ul行
                    $(this).parent().parent().closest('ul').remove();
                    // 否則。(用戶點擊取消)什么都不做
                } else {}
                // 如果被選中了,改變總價,調用計算總價的函數
                // 計算總價
                calcTotal();
            });

            // 找到input 的name是num的元素,當內容改變時
            $('input[name = "num"]').change(function () {
                // 獲取值並轉換為浮點數(數量)
                var val = parseFloat($(this).val());
                // 如果值大於0,其父級的下一個兄弟的文本變成:當前值*當前值的父級的上一個元素值的浮點數
                // 即 數量 * 單價
                if (val > 0) {
                    // 吧單價的值獲取並轉為浮點型 * 單價(當前元素的父級的下一個元素)
                    $(this).parent().next().text(val * parseFloat($(this).parent().prev().text()));
                    // 如果當前值為0 ,刪除按鈕trigger 觸發click事件
                } else if (val == 0) {
                    // 由於input[val = '-']獲取的是集合,三個全都刪掉了。在這里添加判斷,如果值為0,當前行執行delete點擊事件函數
                    if (confirm('you delete your mother ne????')) {
                        $(this).parent().parent().closest('ul').remove();
                    } else {}
                    calcTotal();
                    // $(this).parent().parent().remove();  //直接刪除
                } else {
                    //默認1
                    $(this).val(1);
                }
                calcTotal();
            });

            // - 按鈕
            // 獲取減號,注冊點擊事件
            $('input[value = "-"]').click(function () {
                // - 的下一個的值(數字)-1 轉為整形,設為-下一個元素(數字)的值
                //就是點擊- 吧數字的值--
                $(this).next().val(parseInt($(this).next().val()) - 1);
                // 數字值trigger change事件

                $('input[name = "num"]').trigger('change');
            });


            // + 同理
            $('input[value = "+"]').click(function () {
                $(this).prev().val(parseInt($(this).prev().val()) + 1);
                $('input[name = "num"]').trigger('change');

            });
            // 選擇框 選中一個框就執行一次計算價格的函數
            $('input[name = "one"]').click(function () {
                calcTotal();
            });
            // 當選中全選框時候,操作全選或者反選
            $('input[name = "all"]').click(function () {
                // prop方法設置或返回備選元素的屬性和值
                // 當前元素(頂部復選框)被選中時(checked時)
                var ret = $(this).prop('checked');
                console.log(ret);

                // 每一個單選框都添加checked屬性
                $('input[name="one"]').each(function () {
                    $(this).prop('checked', ret);
                });
                calcTotal();
            });

        });
    </script>
</body>

</html>

 

 布局就這樣了~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM