我在localStorage中获得了以下一对Key / Value:
关键:事件
价值:
[
{'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的普遍决定,它可以达到"我们存储的数据仅表示日期限定符。因此,我们删除了" old"事件和持续时间,然后存储"新"之一。
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}。我没有设法在其帮助下找到具体元素。
答案 0 :(得分:0)
仅指代数组元素并更改您需要尝试的本地存储:
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));
};
};
希望这可以帮到你
答案 1 :(得分:0)
我认为使用LocalStorage执行此操作的唯一方法是只设置密钥的整个值。没有任何对LocalStorage项目的引用,您只需get
或set
。因此,您无法更改整个值的一部分,而无法删除整个值以删除已删除的部分。
我只是使用LocalStorage包装器来处理更新键,在LocalStorage的实际值内使用值(使用JSON)
答案 2 :(得分:0)
使用
在if子句中delete events[i]
,然后添加新事件并将更改的JSON保存到localStorage。