我的商店使用localStorage存储购物车。我用这一行来检索值:
var kamat = window.localStorage.getItem("simpleCart_items"); alert(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"}}
由于我已将其存储为变量,我想稍后使用它。
我想在最后的大括号(变量kamat之后)
之前添加它var toimituskulut = {"Toimitus":{"quantity":1,"id":"Toimituskulut","price":8,"name":"Toimituskulut"}};
我试过这个,因为它需要在项目之间冒号:
var kamatjatoimituskulut = kamat + "," + toimituskulut;
但是不行。如果它会,它会在最后的花括号之后插入toimituskulut的内容。那么我需要做什么?
编辑
单击按钮时我正在尝试编辑它:
$("#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);
});
但不,它不会添加任何东西。
因此,如果本地存储看起来像这样:
{"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"}}
当我点击按钮
时,我希望它看起来像这样{"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;
只会输出与此类似的东西,对吧?
{"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"}
答案 0 :(得分:1)
如果您有两个包含JSON字符串的变量,请执行以下操作:
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):
var kamatJSON = $.parseJSON(kamat);
var toimitusJSON = $.parseJSON(toimituskulut);
然后将它们一起添加:
$.extend(kamatJSON, toimitusJSON);
因为它是一个对象,所以如果你访问像:
这样的值,那么顺序应该不重要kamatJSON.Toimitus
答案 1 :(得分:0)
您想要的是向对象添加属性。
但是你拥有的是一个字符串,因为localStorage只存储字符串。它似乎存储为JSON(这是最明显的解决方案)。
首先,您需要恢复对象:
var kamatObj = JSON.parse(localStorage["simpleCart_items"]);
然后你可以添加一个属性:
kamatObj['toimituskulut'] = toimituskulut;
然后你可以再次将它序列化为字符串,将其放回localStorage:
localStorage["simpleCart_items"] = JSON.stringify(kamatObj);
答案 2 :(得分:0)
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;
});
答案 3 :(得分:0)
如果您尝试向对象添加内容(当然是字符串化),在本地存储中,我只是为此目的编写了一个工具。它可以在本地存储中设置任何类型的值,并同样提取。它甚至可以存储嵌套在存储值内的值。您可以在https://github.com/andresgallo/truStorage
找到脚本/工具答案 4 :(得分:0)
您可能需要查看localDataStorage。它透明地设置/获取数组,布尔值,日期,浮点数,整数,字符串和对象。它提供轻量级数据混淆(用于安全性)并智能地压缩字符串。该实用程序允许您按键(名称)或(键)值或数据类型进行查询,检查重复值,并支持写保护键的概念。注意:我是该实用程序的作者。