我正在执行一项任务,要求我们从伪造的数据库阵列中将对象添加到假购物车阵列,然后转到显示“购物车”中所有内容的购物车页面。现在,这一切都很好,但由于某种原因,我不能在fakeCart数组中显示多个对象。
我相当确定问题出现在这个函数中,因为一切都以其他方式正确显示。
所以,事实证明我发布了我正在修改的代码。我已经将它更新为几乎正常工作的那个。
function addToCart(e) {
'use strict';
var fakeCart = [];
for (var i = 0; i < fakeDatabase.length; i++) {
if (fakeDatabase[i].id == e.currentTarget.id) {
fakeCart.push(fakeDatabase[i]);
}
}
sessionStorage.fakeCart = JSON.stringify(fakeCart);
}
基本上,我可以让代码使一个对象从一个数组(数据库)转到另一个数组(数据库),但每当我尝试添加一个对象时,只需替换最后一个。
答案 0 :(得分:0)
代码会覆盖sessionStorage.fakeCart
的任何现有值,因此序列化数组中永远不会有多个元素。您可以通过从sessionStorage
读取值来解决此问题,而不是每次都创建新列表。
function addToCart(e, productNum) {
'use strict';
// change this
var fakeCart = JSON.parse(sessionStorage.fakeCart) || [];
for (var i = 0; i < fakeDatabase.length; i++) {
if (fakeDatabase[i].id == e.currentTarget.id) {
// and this
fakeCart.push(fakeDatabase[i]);
}
}
sessionStorage.fakeCart = JSON.stringify(fakeCart);
}
答案 1 :(得分:-1)
我想:
而不是
fakeCart[i].push(fakeDatabase[i]);
你需要这个
fakeCart.splice(i, 0, fakeDatabase[i]);