首页 > 解决方案 > 删除逗号并重新添加时出现问题

问题描述

Q: 流程:原来每个数先去掉逗号,再相加,相加后再加回逗号。第一次点击总量没问题(500,000,010),但是第二次点击会变成(500)

new Vue({
  el: "#app",
  data: () => ({
    goldOriginal: "10",
    items: [{
        goldAmout: "100,000,000"
      },
      {
        goldAmout: "100,000,000"
      },
      {
        goldAmout: "100,000,000"
      },
      {
        goldAmout: "100,000,000"
      },
      {
        goldAmout: "100,000,000"
      },
    ],
  }),
  methods: {
    revert() {
      var goldItem = 0;
      var goldTotal = 0;
      for (let i in this.items) {
        let goldAmout = this.items[i].goldAmout;
        goldItem += parseInt(goldAmout.split(",").join(""));
        goldTotal = parseInt(this.goldOriginal) + parseInt(goldItem);
        this.items[i].goldAmout = 0;
      }
      this.goldOriginal = goldTotal.toLocaleString("en-US");
    },
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
  <span>{{goldOriginal}}</span>
  <div class="revert-all text-center" @click="revert()">click</div>
  <div class="item-box" v-for="(item, i) in items" :key="i">
    <div class="amout-item d-flex justify-content-center">
      <div class="update-amout">{{ item.goldAmout }}</div>
    </div>

    <div class="amout-item d-flex justify-content-center">
      <div class="update-amout">{{ item.silverAmout }}</div>
    </div>
  </div>
</div>

标签: javascriptvue.js

解决方案


您还需要拆分您的 goldOriginal。

revert() {
    var goldItem = 0;
    var goldTotal = 0;
    for (let i in this.items) {
        let goldAmout = this.items[i].goldAmout;
        goldItem += parseInt(goldAmout.split(",").join(""));
        goldTotal = parseInt(this.goldOriginal.split(",").join("")) + parseInt(goldItem);
        this.items[i].goldAmout = "0";
    }
    this.goldOriginal = goldTotal.toLocaleString("en-US");
}

我觉得有点难以理解,所以我做了一个较短的版本

revert() {
    let goldTotal = parseInt(this.goldOriginal.split(",").join(""))
    for (let i in this.items) {
        let parsedGold = parseInt(this.items[i].goldAmout.split(",").join(""))
        goldTotal += parsedGold;
        this.items[i].goldAmout = "0";
    }
    this.goldOriginal = goldTotal.toLocaleString("en-US");
},

推荐阅读