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

10-11 13:56
查看更多