我正在使用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"}}
Run Code Online (Sandbox Code Playgroud)
我希望在它关闭之前添加这一行.
"SCI-12":{"quantity":1,"id":"SCI-12","price":5,"name":"Toimituskulut"}
Run Code Online (Sandbox Code Playgroud)
但是,产品数量将取决于用户,因此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.
});
Run Code Online (Sandbox Code Playgroud)
EDIT3本地存储的屏幕截图.

Jac*_*ack 10
您需要了解的第一件事是如何将项存储在localStorage中,这基本上类似于hashmap/dictionary,因为项存储在键值对中.
例如,存储一个string localStorage你会做的事情
localStorage["myKey"] = "some value";
Run Code Online (Sandbox Code Playgroud)
要检索该值,您只需反过来
var myValue = localStorage["myKey"];
Run Code Online (Sandbox Code Playgroud)
接下来要意识到的是,事实上你只能在localStorage中存储字符串,因此如果你想存储一个对象,你需要先将它转换为字符串表示.这通常通过将对象转换为JSON来完成,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"}"
Run Code Online (Sandbox Code Playgroud)
并从JSON读取对象
someObject = JSON.parse(jsonSomeObject);
Run Code Online (Sandbox Code Playgroud)
因此,在您的情况下,假设您的对象包含适当的数据,您需要做的只是stringify您的对象并将其添加到localStorage使用某个键,
var jsonData = JSON.stringify({"SCI-12":{"quantity":1,"id":"SCI-12","price":5,"name":"Toimituskulut"}});
localStorage["aKey"] = jsonData;
Run Code Online (Sandbox Code Playgroud)
当你想稍后访问这些数据时(大概是在返回页面后)
var mySCI = JSON.parse(localStorage["aKey"])
Run Code Online (Sandbox Code Playgroud)
如果您正在尝试更新localStorage中的特定条目,那么您只需将其读入然后覆盖它,例如
var mySCI = JSON.parse(localStorage["aKey"]);
mySCI.SCI-12.quantity = 2;
localStorage["aKey"] = JSON.stringify(mySCI);
Run Code Online (Sandbox Code Playgroud)
请记住,虽然大多数浏览器内置了对JSON的支持,但是一些较旧的浏览器不支持,如果这是一个问题,您可以包含Douglass Crockfords JSON-js脚本来提供支持.
编辑:
根据您刚刚发布的屏幕截图,您可以看到值存储在localStorage中的键实际上是simpleCart_items(而不是您的代码中使用的your_json),并且存储的对象具有存储的对象在关键的"SCI-1"下(也可能是"SCI"下的其他人).所以你需要做的是如下
$("#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.
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12829 次 |
| 最近记录: |