我正在做一项作业,要求我们将对象从假数据库数组添加到假购物车数组,然后转到显示“购物车”中所有内容的购物车页面。现在,一切都很好,但由于某种原因,我无法在 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/