VUE购物车

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            * {
                margin: 0 auto;
                padding: 0;
            }

            table {
                width: 600px;
                text-align: center;
            }

            img {
                width: 30px;
                height: 30px;
            }

            .bottom {
                width: 600px;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <table frame="box" rules="rows">
                <tr>
                    <th><input type="checkbox" @click="selectAll">全选</th>
                    <th>商品信息</th>
                    <th>单价(元)</th>
                    <th>数量</th>
                    <th>小计(元)</th>
                    <th>操作</th>
                </tr>
                <tr v-for="(item,index) in info">
                    <td><input type="checkbox" v-model="item.checked"></td>
                    <td><img :src="item.img">{{item.message}}</td>
                    <td>{{item.price}}</td>
                    <td>
                        <button @click="reduce(index)">-</button>
                        {{item.num}}
                        <button @click="add(index)">+</button>
                    </td>
                    <td>{{item.price*item.num}}</td>
                    <td><button @click="del(index)">删除</button></td>
                </tr>
            </table>
            <div class="bottom">
                <input type="checkbox" @click="selectAll" />全选
                <span style="margin-left:320px;margin-top: 0px;">总共<span style="color: red;">{{num}}</span>件商品</span>
                <span>总共<span style="color: red;">{{res}}</span>元</span>
                <button type="button" style="background-color: gray;color: white;">去结算</button>
            </div>
        </div>
    </body>
</html>

<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<script type="text/javascript">
    var vue = new Vue({
        el: "#app",
        data: {
            info: [{
                    img: "./img/1.png",
                    message: "夏季纯棉短袖男士宽松",
                    price: 49,
                    num: 1,
                    checked: false
                },
                {
                    img: "./img/1.png",
                    message: "夏季纯棉短袖男士宽松",
                    price: 49,
                    num: 1,
                    checked: false
                },
                {
                    img: "./img/1.png",
                    message: "夏季纯棉短袖男士宽松",
                    price: 49,
                    num: 1,
                    checked: false
                },
            ]
        },
        methods: {
            // 购物车中商品删除功能
            del: function(index) {
                // 点击按钮时,弹出询问框,提示“是否将商品移除购物车?”
                if (confirm("是否将商品移除购物车?")) {
                    // 点击确定将该行商品在列表中删除
                    this.info.splice(index, 1)
                }

            },
            // 数量减少给 - 按钮绑定事件
            // 购物车中每个商品最终数量最少购买1件商品
            reduce: function(index) {
                if (this.info[index]["num"] > 1) {
                    // 点击 - 实现商品数量-1
                    this.info[index]["num"]--
                    return false
                }
                alert("数量最少购买1件商品")
            },
            // 数量增加给 + 按钮绑定事件
            // 购物车中每个商品增加数量不能超过5件商品
            add: function(index) {
                if (this.info[index]["num"] < 5) {
                    // 点击 + 实现商品数量+1
                    this.info[index]["num"]++
                    return false
                }
                alert("数量不能超过5件商品")
            },
            // 实现全选、反选功能
            // 给复选框绑定事件
            // 点击可实现列表商品全选功能再次点击可实现列表反选功能
            selectAll: function() {
                this.info.map(function(item, index) {
                    if (item.checked == true) {
                        item.checked = false
                        return false
                    }
                    item.checked = true
                })
            }
        },
        computed: {
            // 数量获取选中的商品数量    
            // 商品数量展示在右下角总共几件商品
            num() {
                var sum = 0;
                this.info.map(function(item, index) {
                    if (item.checked == true) {
                        sum += item.num
                    }
                })
                return sum
            },
            // 总金额
            // 选中的商品,计算出总价格
            res() {
                var sum = 0;
                this.info.map(function(item, index) {
                    if (item.checked == true) {
                        sum += item.num * item.price
                    }
                })
                return sum
            },
        }
    })
</script>
 

上一篇:2021 -11-30 ztree使用


下一篇:Java中异常分为哪些种类?