我在localStorage中获得了以下密钥/值对:
关键字:事件
值:
[
{'Date': '4-5-2015',
'Event': 'Theater',
'Duration': '2 hours'},
{'Date': '4-5-2015',
'Event': 'Bowling',
'Duration': '3 hours in the evening'},
...
{'Date': '10-5-2015',
'Event': 'Driving',
'Duration': '4 hours of driving'},
];这个代码是用来写日历的。每天只能有一个事件。我的问题是,当存储同一天的较新数据时,我无法删除前一天的数据。
我需要的是一个基于Javascript的通用决策,它可以通过日期限定符来“到达”存储的数据。因此,我们删除“旧”事件和持续时间,然后存储“新”事件和持续时间。
for (i=0; i<events.length; i++) {
if(newDate == yetStoredDate) {
events[i].Event.removeItem(?) //How to refer only this Event?
events[i].Duration.removeItem((?) //How to refer only this Duration?
};
};我也尝试过splice()方法,但它似乎只适用于删除整个块{Date / Event / Duration}。在它的帮助下,我没能达到特定的元素。
发布于 2015-04-27 04:48:09
要只引用array的元素并更改本地存储,您需要尝试:
localStorage.setItem("events", JSON.stringify(events));
for (i=0; i<events.length; i++) {
if('4-5-2015' == events[i].Date) {
events[i].Event = "new value";
events[i].Duration = "new value";
var x = JSON.parse(localStorage.getItem("events"));
x[i] = events[i];
localStorage.setItem("events", JSON.stringify(x));
};
};希望这能对你有所帮助
发布于 2015-04-27 05:33:21
我认为使用LocalStorage完成此操作的唯一方法是为键设置整个值。没有任何对LocalStorage项的引用,您只需get或set它即可。因此,如果不实际更新整个值以删除删除的部分,则不能更改该值的一部分。
我刚刚使用了一个LocalStorage包装器来处理LocalStorage实际值内的键、值的更新(使用JSON)
发布于 2015-04-27 07:26:30
在if子句中使用delete events[i],然后添加新事件并将更改后的JSON保存到localStorage。
https://stackoverflow.com/questions/29883151
复制相似问题