【发布时间】:2016-05-12 14:51:56
【问题描述】:
我一直在尝试从 localStorage 获取 id,但无法实现。
我在events 中的localStorage 包含如下内容。
[{"id":"ef5","title":"wan","start":"2016-05-12","end":"2016-05-13"},{"id":"ef6","title":"wana","start":"2016-05-21","end":"2016-05-22"},{"id":"ef7","title":"haha","start":"2016-05-25","end":"2016-05-26"},{"id":"ef8","title":"asdas","start":"2016-05-20","end":"2016-05-21"},{"id":"ef9","title":"sdas","start":"2016-05-19","end":"2016-05-20"}]
现在我将提供 2 种使用我迄今为止尝试过的不同方法的编码。有关信息,我浏览了这个主题:localstorage: Get specific localstorage value of which contains many items 但没有一个适合我。
我确实尝试过如下编码:
第一种方法:
$("#deleteEventYes").click(function(){
var indexDel = localStorage.getItem("events");
var deleteId = calEvent.id;
var result = localStorage.getItem("events");
function getItemHrefById(json, itemId){
return $(json).filter(function(){return this.id == itemId;})[0].href;
}
var href = getItemHrefById(result, deleteId);
alert(href); });
上面的代码显示了某种数组方法(我认为),其中我使用 indexDel 从 localStorage (events) 获取项目,而 deleteId 我从 calEvent.id 获取,这是已单击事件的 id为了被删除。除此之外,我想你们知道它是什么。但是对于这种方法,我使用result 变量而不是 indexDel。因此,如果我从 localStorage 获取项目 2 次,请不要介意
第二种方法:
for (var i = 0 ; i < indexDel.length ; i += 1) {
if(deleteId == indexDel[i].id) {
return indexDel[i];
console.log(deleteId);
console.log(indexDel[i]);
}
}
return null;
我认为上面的代码使用了自定义循环。 indexDel 的变量声明仍然与第一种方法相同。我尝试使用重构方法,但我似乎很难理解它是如何完成的。是因为我的变量放置错误吗?还是因为不适合我的情况?
注意:我想删除 eventClick 函数中的一个事件,到目前为止,我确实检索了 id 并根据 id 从日历中删除了该事件。但是,我现在唯一的问题是将已删除的事件 id 与我的 localStorage 中的 id 匹配并删除该项目。到目前为止,从 id 获取 id 对我来说非常复杂。
更新
我已经做过类似的事情,但仍然无法正常工作。谁能告诉我这里出了什么问题?它没有给我任何错误,但它什么也不做。连删除都不行。 https://jsfiddle.net/v35a2o07/3/
【问题讨论】:
-
localStorage将值存储为字符串。在对它们进行操作之前,请务必JSON.parse()您的值。 :) -
你的意思是这样的吗? jsfiddle.net/v35a2o07 它不起作用 :( 我想我可能会误解变量放置。这就是为什么我很难遵循这种方法
-
使用
delete关键字删除数组元素。 -
@AhKing 小提琴不完整。 jQuery未定义,处理程序未关闭(即
});),元素#deleteEventYes不存在... -
@War10ck 这只是我删除部分的编码。此外,我的完整编码现在一团糟:P。所以如果我暂时不给满一个可能会更好。对此感到抱歉。反正我已经解决了。
标签: javascript jquery fullcalendar local-storage