首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >localStorage问题

localStorage问题
EN

Stack Overflow用户
提问于 2012-09-16 17:33:09
回答 5查看 886关注 0票数 0

我的商店使用localStorage存储购物车。我使用了这一行来检索值:

代码语言:javascript
复制
var kamat = window.localStorage.getItem("simpleCart_items"); alert(kamat);

这将检索到如下内容:

代码语言:javascript
复制
{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"}}

由于我已经将它存储为一个变量,我希望稍后再使用它。

我想在最后的卷曲括号(变量kamat之后)添加这一项。

代码语言:javascript
复制
var toimituskulut = {"Toimitus":{"quantity":1,"id":"Toimituskulut","price":8,"name":"Toimituskulut"}};

我尝试过这样做,因为它需要在项目之间设置一个冒号:

代码语言:javascript
复制
var kamatjatoimituskulut = kamat + "," + toimituskulut;

但不管用。如果可以,它将在最后的卷曲括号后面插入toimituskulut的内容。那我需要做什么?

编辑

当单击按钮时,我试图编辑它:

代码语言:javascript
复制
$("#posti").live('click', function() {
        $(".maksu").slideDown(600);
        $("#posti").attr("disabled" , "disabled");
        $("#matkahuolto").removeAttr("disabled");
        $("#posti").addClass( "selectedtoimitus" );
        $("#matkahuolto").removeClass( "selectedtoimitus" );
        $(".simpleCart_shipping").html(kamat);  
        var kamatObj = JSON.parse(localStorage["simpleCart_items"]);
        kamatObj['toimituskulut'] = toimituskulut;
        localStorage["simpleCart_items"] = JSON.stringify(kamatObj);


    });

但是不,它不会增加任何东西。

JSFIDDLE

因此,如果本地存储看起来如下:

代码语言:javascript
复制
{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"}}

--当我点击按钮时,我希望它看起来像这样

代码语言:javascript
复制
{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"},"Toimitus":{"quantity":1,"id":"Toimitus","price":5,"name":"Toimituskulut"}}

但是做var kamatjatoimituskulut = kamat + "," + toimituskulut;只会输出类似的东西,对吗?

代码语言:javascript
复制
{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"}},"Toimitus":{"quantity":1,"id":"Toimitus","price":5,"name":"Toimituskulut"}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-16 18:08:09

如果有两个包含JSON字符串的变量,如下所示:

代码语言:javascript
复制
var kamat = '{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Valkoinen hiilikuitu -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":4,"name":"Car Speaker -hajuste","color":"Sport Fresh"}}';

var toimituskulut = '{"Toimitus":{"quantity":1,"id":"Toimituskulut","price":8,"name":"Toimituskulut"}}';

您需要像这样将这些字符串解析为json (我使用的是jQuery):

代码语言:javascript
复制
var kamatJSON = $.parseJSON(kamat);
var toimitusJSON = $.parseJSON(toimituskulut);

然后像这样把它们加在一起:

代码语言:javascript
复制
$.extend(kamatJSON, toimitusJSON);

由于它是一个对象,如果您访问的值如下:

代码语言:javascript
复制
kamatJSON.Toimitus

小提琴

票数 1
EN

Stack Overflow用户

发布于 2012-09-16 17:44:47

您想要的是向对象添加属性。

但是您拥有的是一个字符串,因为localStorage只存储字符串。它似乎被存储为JSON (这是最明显的解决方案)。

首先,您需要还原对象:

代码语言:javascript
复制
var kamatObj = JSON.parse(localStorage["simpleCart_items"]);

然后您可以添加一个属性:

代码语言:javascript
复制
kamatObj['toimituskulut'] = toimituskulut;

然后您可以再次将其序列化为string,以便将其放回localStorage中:

代码语言:javascript
复制
localStorage["simpleCart_items"] = JSON.stringify(kamatObj);
票数 0
EN

Stack Overflow用户

发布于 2012-09-16 18:09:51

代码语言:javascript
复制
    Try This :
        $("#posti").live('click', function() {
                $(".maksu").slideDown(600);
                $("#posti").attr("disabled" , "disabled");
                $("#matkahuolto").removeAttr("disabled");
                $("#posti").addClass( "selectedtoimitus" );
                $("#matkahuolto").removeClass( "selectedtoimitus" );
                $(".simpleCart_shipping").html(kamat);  
                var kamatObj = JSON.parse(localStorage["simpleCart_items"]);
var resultObject =JSON.parse((kamatObj).concat(JSON.parse(toimituskulut));
 alert(resultobjcet); 
localStorage["simpleCart_items"] = resultObject; 
            });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12449091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档