我正在做一项作业,要求我们从假数据库阵列中向假购物车阵列添加对象,然后转到显示“购物车”中所有内容的购物车页面。现在,一切都很好,但是由于某种原因,我无法在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);
}
从本质上讲,我可以获得使单个对象从一个数组(数据库)移到另一个数组(购物车)的代码,但是只要我尝试在其中添加一个,就可以替换最后一个。
最佳答案
该代码将覆盖任何现有的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);
}
关于javascript - 创建数组并将其存储在带有JavaScript的sessionStorage中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22120347/