这可能很难解释,所以我会尽我所能。
我试图以某种方式使用localstorage,我甚至不确定它是否可能。 基本上我想提交一些值作为列表。 当用户重新加载时,它会从本地存储中提取这些值并显示它们。
理想情况下,我希望将每个值存储在同一个Key下,然后尝试循环该键并打印与该键关联的值。 正如您在重新加载时所看到的那样,它正在加载数组中的每个字母,因为它查看整个值的长度而不是每个单词。
我知道我有点休息,但就我的情况而言。非常感谢任何提示(我从未使用过localStorage,所以对我来说有点新鲜)
考虑一下:
var i = 0;
var taskArray = [];
var storedTasks = localStorage.getItem('Tasks');
for( i = 0; i < localStorage.length; i++)
$("#tasks").append("<li id='task-"+ i +"'>" + storedTasks[i] + "</li>");
// Add a task
$("#tasks-form").submit(function() {
if ($("#task").val() != "") {
$("#tasks").append("<li id='task-" + i + "'>" + '<span class="taskSpan">' + $("#task").val() + '</span>' + '</li>')
$("#task-" + i).css('display', 'none');
$("#task-" + i).fadeIn(350);
taskArray.push($("#task").val());
localStorage.setItem('Tasks', taskArray);
i++;
}
return false;
});
答案 0 :(得分:2)
无论您推入localStorage的数据类型如何,它都会最终转换为字符串。这意味着您从localStorage中提取的任何内容都必须转换回您期望的任何数据类型。
在这种情况下,由于您正在使用字符串,因此您将迭代视为一个字符数组而不是字符串数组。
要转换回数组,只需在分隔每个单词的','上拆分:
var storedTasks = localStorage.getItem('Tasks');
var storedTasksArray = storedTasks.split(',');
现在,遍历storedTasksArray,每个索引指向一个单词而不是一个字母。
顺便说一句,为了让你的生活变得简单,如果你要使用很多localStorage,你可以考虑做一个typeof value
并将类型存储在localStorage中,然后当你拉出来时在数据中,您可以使用一些元数据在插入之前将其转换回数据类型。