localStorage - 循环遍历javascript中特定键的值

时间:2014-06-23 22:24:21

标签: javascript jquery

这可能很难解释,所以我会尽我所能。

我试图以某种方式使用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;
    });

JSFiddle

1 个答案:

答案 0 :(得分:2)

无论您推入localStorage的数据类型如何,它都会最终转换为字符串。这意味着您从localStorage中提取的任何内容都必须转换回您期望的任何数据类型。

在这种情况下,由于您正在使用字符串,因此您将迭代视为一个字符数组而不是字符串数组。

要转换回数组,只需在分隔每个单词的','上拆分:

var storedTasks = localStorage.getItem('Tasks');
var storedTasksArray = storedTasks.split(',');

现在,遍历storedTasksArray,每个索引指向一个单词而不是一个字母。

顺便说一句,为了让你的生活变得简单,如果你要使用很多localStorage,你可以考虑做一个typeof value并将类型存储在localStorage中,然后当你拉出来时在数据中,您可以使用一些元数据在插入之前将其转换回数据类型。