修改localStorage的?(Modify localstorage?)

2019-06-28 09:02发布

我使用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的屏幕截图。

Answer 1:

你需要了解的第一件事是项目的方式存储在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.

});


Answer 2:

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的是。
有人可能要考虑这个作为替代品。



Answer 3:

或者你可以让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。



文章来源: Modify localstorage?