1

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

本质上,我可以获得使单个对象从一个数组(数据库)到另一个(购物车)的代码,但是每当我尝试将一个对象添加回它时,它只会替换最后一个对象。

4

2 回答 2

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);
}
于 2014-03-01T21:07:00.920 回答
-2

我认为 :

代替

fakeCart[i].push(fakeDatabase[i]);

你需要这个

fakeCart.splice(i, 0, fakeDatabase[i]);
于 2014-03-01T21:14:39.457 回答