购物车 (vue做法)

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>购物车</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #table {
            width: 500px;
            /* border: 1px solid #cecece; */
            margin: 100px auto;
            border-collapse: collapse;
            text-align: center;
        }

        #table th {
            height: 50px;
            border: 1px solid #000000;
            background-color: aquamarine;
        }

        #table td {
            height: 50px;
            border: 1px solid #000000;

        }
    </style>
</head>

<body>
    <table id="table">
        <thead>
            <tr>
                <th>
                    全选 <input type="checkbox" :style="xua" v-model='qx' @change='qa()'>
                </th>
                <th>商品名称</th>
                <th>数量</th>
                <th>单价</th>
                <th>小记</th>
                <th>操作</th>
            </tr>
        </thead>

        <tbody>
            <tr v-for="(shang,index) in shangs">
                <td><input type="checkbox" :style="xua" v-model='shang.m' @change='danxuan()'></td>
                <td>{{shang.name}}</td>
                <td>
                    <button :style="xua" @click='jian(index)'>-</button> <span id="shu">{{shang.shuliang}}</span>
                    <button :style="xua" @click='add(index)'>+</button>
                </td>
                <td>单价:¥ <span id="danjia">{{shang.danjian}}</span></td>
                <td>小记:¥ <span id="xiaoji">{{shang.xiaoji}}</span></td>
                <td>操作:<button :style="dele" id='shan' @click='shan(index)'>删除</button></td>
            </tr>
            <tr>
                <td colspan="6">商品一共共计<span>{{zongjian()}}</span>件,共计花费¥<span>{{zongqian()}}</span></td>
            </tr>
        </tbody>
    </table>
    <script src="./js/vue.js"></script>

    <script>
        let vue = new Vue({
            el: '#table',
            data: {
                xua: 'width: 20px; height: 20px;',
                dele: 'width: 50px; height: 20px;',
                // 全选双绑的qx
                qx: false,
                shangs: [{
                        m: false,
                        'name': '水煮鱼',
                        'shuliang': 0,
                        'danjian': 22,
                        'xiaoji': 0
                    },
                    {
                        m: false,
                        'name': '羊肉泡',
                        'shuliang': 0,
                        'danjian': 23,
                        'xiaoji': 0
                    },
                    {
                        m: false,
                        'name': '肉夹馍',
                        'shuliang': 0,
                        'danjian': 12,
                        'xiaoji': 0
                    },
                    {
                        m: false,
                        'name': '凉皮',
                        'shuliang': 0,
                        'danjian': 8,
                        'xiaoji': 0
                    },
                    {
                        m: false,
                        'name': '炒拉条',
                        'shuliang': 0,
                        'danjian': 13,
                        'xiaoji': 0
                    }
                ],

            },
            methods: {
                // 加号事件
                add(index) {
                    this.shangs[index].shuliang++
                    this.shangs[index].xiaoji = this.shangs[index].shuliang * this.shangs[index].danjian
                },
                // 减号事件
                jian(index) {
                    if (this.shangs[index].shuliang <= 0) {
                        this.shangs[index].shuliang = 0
                        return
                    }
                    this.shangs[index].shuliang--
                    this.shangs[index].xiaoji = this.shangs[index].shuliang * this.shangs[index].danjian
                },
                // 全选事件
                qa() {
                    for (var i = 0; i < this.shangs.length; i++) {
                        this.shangs[i].m =this.qx
                    }
                },
                // 单选事件
                danxuan(){
                    let a = true
                    for (var i = 0; i < this.shangs.length; i++) {
                        if (!this.shangs[i].m) {
                            a = false
                            break
                        }
                    }
                    this.qx = a
                },
                // 总件数
                zongjian(){
                    var zongj = 0 
                    for (var i = 0; i < this.shangs.length; i++){
                        if (this.shangs[i].m){
                            zongj = zongj + this.shangs[i].shuliang 
                        }
                    }
                    return zongj
                },
                // 总价
                zongqian(){
                    var money = 0 
                    for (var i = 0; i < this.shangs.length; i++){
                        if (this.shangs[i].m){
                            money = money + this.shangs[i].shuliang *  this.shangs[i].danjian
                        }
                    }
                    return money
                },
                // 删除
                shan(index){
                    this.shangs.splice(index,1)
                }
            }
        })
    </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值