我使用simplecartjs供电的在线商店。 它存储在本地存储,它看起来像这样的数据:
{"SCI-1":{"quantity":1,"id":"SCI-1","price":20,"name":"Mattamusta -teippi","size":"Tyhjä"},"SCI-3":{"quantity":1,"id":"SCI-3","price":19,"name":"Mohawk .vaimennusmatto 48 x 39cm"},"SCI-5":{"quantity":2,"id":"SCI-5","price":8,"name":"Car Speaker -hajuste","color":"Green Tea"},"SCI-7":{"quantity":1,"id":"SCI-7","price":50,"name":"Asennuspaketti"},"SCI-9":{"quantity":1,"id":"SCI-9","price":30,"name":"Quartz-kalvot","color":"Yellow","size":"50cm x 30cm"},"SCI-11":{"quantity":1,"id":"SCI-11","price":30,"name":"Quartz-kalvot","color":"True Blue","size":"50cm x 30cm"}}
我希望它关闭之前添加此行。
"SCI-12":{"quantity":1,"id":"SCI-12","price":5,"name":"Toimituskulut"}
然而,产品的量将取决于用户,等等SCI-12必须的项目数增长。
编辑其实,它好好尝试一下要使用SCI-1,它可以是任何东西,只要它的项目之后。
EDIT2这里就是我想要...但没有运气。
$("#matkahuolto").click(function(){
var value_object = '"Toimituskulut":{"quantity":1,"id":"Toimituskulut","price":5,"name":"Toimituskulut"}';
var json_object = JSON.parse(localStorage.your_json); // convert string to object
json_object["simpleCart_items"] = value_object; // add value
localStorage.your_json = JSON.stringify(json_object); // store it again.
});
$("#posti").click(function(){
var json_object = JSON.parse(localStorage.your_json); // convert string to object
json_object["simpleCart_items"] = value_object; // add value
localStorage.your_json = JSON.stringify(json_object); // store it again.
});
localStorage的的EDIT3的屏幕截图。
你需要了解的第一件事是项目的方式存储在localStorage的 ,这基本上是一样的,该项目被存储在键值对一个HashMap /字典。
例如存储一个string
localStorage
,你会做这样的事情
localStorage["myKey"] = "some value";
要检索的价值,你会刚刚相反
var myValue = localStorage["myKey"];
意识到接下来的事情是,你实际上可以只存储字符串在本地存储,所以如果你要存储一个对象,你需要先将其转换为字符串表示。 这通常是通过将所述对象所做JSON其是用于表示一个对象为字符串的紧凑表示法。 要转换的对象为JSON你只需要使用JSON.stringify
方法,并分析您使用的项目JSON.parse
方法
例如转换一个目的是JSON
var someObject = {id: 1, name: 'Test'};
var jsonSomeObject = JSON.stringify(someObject);
// jsonSomeObject looks like "{"id":1,"name":"test"}"
并读取JSON对象
someObject = JSON.parse(jsonSomeObject);
所以,现在你的情况假设你的对象包含了适当的数据,所有你需要做的就是stringify
的对象,并把它添加到localStorage
使用一些关键的,
var jsonData = JSON.stringify({"SCI-12":{"quantity":1,"id":"SCI-12","price":5,"name":"Toimituskulut"}});
localStorage["aKey"] = jsonData;
当你想稍后再访问此数据(回来的页面后大概)
var mySCI = JSON.parse(localStorage["aKey"])
如果您想更新的localStorage的特定条目,那么你只想读它,然后覆盖它,例如
var mySCI = JSON.parse(localStorage["aKey"]);
mySCI.SCI-12.quantity = 2;
localStorage["aKey"] = JSON.stringify(mySCI);
请记住,虽然大多数浏览器都内置了对JSON支持一些旧的不这样做,如果这是一个问题,你可以包括道格拉斯康乐福JSON-JS脚本提供支持。
编辑:
根据您刚刚张贴的截图,你可以看到,在其下的值存储在localStorage的关键其实是在simpleCart_items(和使用在你的代码不your_json),并且正被存储在对象存储一个对象根据SCI的‘)的关键“下SCI-1)(也可能是别人。’所以,你需要做的是类似如下
$("#matkahuolto").click(function(){
var value_object = {quantity: 1, id: 1, name: "someName"} ;
var jsonObject = JSON.parse(localStorage["simpleCart_items"]);
json_object["SCI_1"] = value_object; // add value
localStorage["simpleCart_items"] = JSON.stringify(json_object); // store it again.
});
$("#posti").click(function(){
// convert string to object
var json_object = JSON.parse(localStorage["simpleCart_items"]);
json_object["SCI-1"] = value_object; // add value
localStorage["simpleCart_items"] = JSON.stringify(json_object); // store it again.
});
localStorage的存储所有数据的文本字符串。 因此,这将是最容易进行修改之前,已转换为文本字符串。
否则,你需要将JSON字符串拉成一个对象,添加属性,将其转换回字符串并存储起来。
示例代码
var json_object = JSON.parse(localStorage.your_json); // convert string to object
json_object[key] = value_object; // add value
localStorage.your_json = JSON.stringify(json_object); // store it again.
注意
这就是IndexedDB的是。
有人可能要考虑这个作为替代品。
或者你可以让http://rhaboo.org做繁重,写:
var store = Rhaboo.persistent("My Cart");
if (store.cart === undefined)
store.write('cart', []);
//otherwise it must have data in from before
$("#matkahuolto").click(function(){
store.cart.push ({
"quantity":1, "id":"Toimituskulut",
"price":5, "name":"Toimituskulut" });
});
$("#show").click(function(){ console.log(
store.cart.map(function (i) {
return i.quantity + " " + i.id + "s at " + i.price + " each"
}).join(' plus '); );
});
顺便说一句,我写rhaboo。