zoukankan      html  css  js  c++  java
  • 购物车实现单选全选,计算数量和价格

    <template>
      <div class="login">
        <div class="item" v-for="(item,index) in dataList" :key="index">
          <input @change="change(index,item.checked)" type="checkbox" :checked="item.checked" />
          {{item.name}},单价{{item.price}}个数{{item.num}}
        </div>
        <div class="item">
          <input type="checkbox" @change="changeAll" :checked="allChecked" />
          全选,总数量{{count}}总价格{{money}}
        </div>
      </div>
    </template>
    <script>
    export default {
      name: "login",
      data() {
        return {
          dataList: [
            { id: 1, name: "苹果", price: 4, num: 4 },
            { id: 2, name: "香蕉", price: 3, num: 2 },
            { id: 3, name: "梨", price: 3, num: 2 },
            { id: 4, name: "西红柿", price: 2, num: 11 },
          ],
          allChecked: false,
          count: 0,
          money: 0,
        };
      },
      methods: {
        changeAll() {
          this.count = 0;
          this.money = 0;
          for (var i = 0; i < this.dataList.length; i++) {
            this.$set(this.dataList[i], "checked", false);
          }
          if (this.allChecked) {
            this.allChecked = false;
            this.count = 0;
            this.money = 0;
          } else {
            this.allChecked = true;
            for (var j = 0; j < this.dataList.length; j++) {
              this.count += Number(this.dataList[j].num);
              this.money +=
                Number(this.dataList[j].num) * Number(this.dataList[j].price);
              this.$set(this.dataList[j], "checked", true);
            }
          }
        },
        change(index, checked) {
          this.count = 0;
          this.money = 0;
          console.log(checked,887)
          if (!checked) {
            this.$set(this.dataList[index], "checked", true);
          } else {
            this.$set(this.dataList[index], "checked", false);
          }
          this.$nextTick(() => {
            for (var j = 0; j < this.dataList.length; j++) {
              if (this.dataList[j].checked) {
                this.count += Number(this.dataList[j].num);
                this.money +=
                  Number(this.dataList[j].num) * Number(this.dataList[j].price);
              }
            }
            if (this.dataList.every((item) => item.checked == true)) {
              this.allChecked = true;
            } else {
              this.allChecked = false;
            }
          });
        },
      },
    };
    </script>
    <style lang="scss">
    .login {
      margin: 100px;
    }
    .item {
      display: flex;
    }
    </style>
  • 相关阅读:
    Java最常见的面试题:模块十一
    Java最常见的面试题:模块九和模块十
    Java最常见的面试题:模块八
    Java最常见的面试题:模块七
    【leetcode】跳跃游戏
    【leetcode】字母异位词分组
    【C++】STL各容器的实现,时间复杂度,适用情况分析
    【C++】如何使用GCC生成动态库和静态库
    【C++】C++中基类的析构函数为什么要用virtual虚析构函数?
    【leet-code】接雨水
  • 原文地址:https://www.cnblogs.com/studyWeb/p/13432283.html
Copyright © 2011-2022 走看看