购物车中取消商品时,取消第一个商品后如果后面有第二个商品且第二个商品数量为1个,第二个商品数量会变成0。但我不想让第二个商品的数量为0。
时间: 2024-03-25 21:41:10 浏览: 43
了解了您的需求,可以对代码进行如下修改:
```
handleChange(value) {
var numDom = this.$refs;
for (var i = 0; i <= this.shoppingCar.length - 1; i++) {
if (value.itemId == this.shoppingCar[i].itemId) {
if (this.sum !== 0) {
this.sum = (this.sum.toFixed(2) * 100000000000000) / 100000000000000;
}
this.shoppingCar[i].numValue = parseInt(numDom[value.itemId][0].inputValue);
if (this.shoppingCar[i].numValue == 0) {
// 判断后面商品数量是否为1
if (this.shoppingCar[i + 1] && this.shoppingCar[i + 1].numValue == 1) {
// 将当前商品数量赋值为1
this.shoppingCar[i].numValue = 1;
} else {
// 直接删除当前商品
this.shoppingCar.splice(i, 1);
}
this.shoppingItem.data = [];
}
this.shoppingItem.data = JSON.parse(uni.getStorageSync(this.sellerId));
break;
}
}
this.shoppingItem.data.forEach((item) => {
item.numValue = numDom[item.itemId][0].inputValue;
});
this.sumAdd();
this.sumCount();
uni.setStorageSync(this.sellerId, JSON.stringify(this.shoppingCar));
uni.setStorageSync('doAccounts', JSON.stringify(this.sum));
uni.setStorageSync('count', JSON.stringify(this.count));
this.shoppingItem.data = JSON.parse(uni.getStorageSync(this.sellerId));
}
```
这样,在判断到当前商品数量为0时,会先判断后面一个商品的数量是否为1,如果是,就将当前商品的数量赋值为1,否则直接删除当前商品。这样就可以避免出现后面商品数量为0的情况。
阅读全文