购物车中取消商品时,取消第一个商品后如果后面有第二个商品且第二个商品数量为1个,则第二个商品数量也为0了。使用shoppingItem.data数组绑定card,使用shoppingCar数组存储产品的相关信息存入localStorage中,可以给一下解决的方法吗?我现在的代码如下: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) { // this.shoppingCar.splice(i,2) 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))
时间: 2024-03-25 11:41:03 浏览: 48
原生js简易购物车商品数量计算代码
根据你的代码,我猜测你的问题可能是在取消商品时,如果第二个商品数量为1个,取消第一个商品后第二个商品数量也变为0了,这不是你想要的结果。如果我理解的不正确,请告诉我。
如果是这样的话,你可以在取消第一个商品时,先检查第二个商品的数量是否为1,如果是1,那么不要将第二个商品的数量设置为0。你可以按照以下方式更改你的代码:
```
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,如果是1,则不要将其数量设置为0
if (i < this.shoppingCar.length - 1 && this.shoppingCar[i + 1].numValue == 1) {
this.shoppingCar.splice(i, 1);
} else {
this.shoppingCar.splice(i, 2);
}
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));
}
```
在上面的代码中,我添加了一个检查,如果第二个商品的数量为1,则不要将其数量设置为0。我希望这可以解决你的问题。如果还有其他问题,请告诉我。
阅读全文