【问题标题】:HTML5 localstorage difficultyHTML5 本地存储难度
【发布时间】:2014-09-23 18:53:27
【问题描述】:

我试图做的是存储在 localstorage 下面的结构中

localstorage -> hash1 -> {name11, name12, name13, ...} 
             -> hash2 -> {name21, name22, name23, ...} 
              ...

我正在将名称收集到一个数组中,然后像下面这样推送

files.push(file.name);
localStorage.setItem(hash, JSON.stringify(files));

我认为 localstorage 就像一个空数组,当我循环访问 localstorage 时,我只会得到我的哈希值。但是现在当我像下面这样循环时

for(var hash in window.localStorage){
    var files = JSON.parse(localStorage.getItem(hash));
    var filesHtml= [];
    $.each(files, function(i, item) {
        filesHtml.push('<li><a href="/' + hash+'/'+item + '">' + item + '</a></li>');
    });
   ...

}

我正在本地存储中获取大量其他数据。我怎样才能像下面这样收集我的哈希值

localstorage ->history -> hash1 -> {name11, name12, name13, ...} 
                       -> hash2 -> {name21, name22, name23, ...} 
                        ...

并在 localstorage 中创建三维history 数组,这样当我循环通过history 时,我只会得到我的哈希值,没有其他数据?有什么解决办法吗?

【问题讨论】:

    标签: javascript jquery arrays html local-storage


    【解决方案1】:

    使用数组怎么样?

    $(document).ready(function(){
        var hashes = [];
        hashes[0] = ["name1", "name2", "name3"];
    
        localStorage["hashes"] = JSON.stringify(hashes);
    
    
        var restoredHashes = JSON.parse(localStorage["hashes"]); 
    
        for(var i = 0; i < restoredHashes.length; i++){
    
            var names = restoredHashes[i];
    
            for(var j = 0; j < names.length; j++)
            {
                $("#output").append(names[j]  + "<BR/>");
            }
        }
    
    });
    

    编辑:重新编写代码以实际工作。检查JSFiddle

    编辑:向 JSFiddle 示例添加代码以证明“哈希”在 localStorage 中持久存在。检查JSFiddle version2

    【讨论】:

    • 你不能像这样使用 localstorage:localStorage["hashes"] Localstorage 不是数组,它是一个对象
    • 它有效。不知道你的意思。检查JSFiddle
    • 这是一篇文章link
    • 我和你说的一样。它在 Firefox 上工作,但在 chrome 上失败。让我们在这里聊天chat.stackoverflow.com/rooms/58453/localstorage
    • 我只使用 chrome。不知道为什么它在 chrome 中不适合你。您使用的是最新版本的 Chrome 吗?
    【解决方案2】:

    我想这会对你有所帮助

    for(var hash in window.localStorage){
        if(window.localStorage.hasOwnProperty(hash)){
             //Do your work
        }    
    }
    

    【讨论】:

    • 试过了,没用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2011-07-28
    • 2013-06-08
    • 2011-04-12
    • 2018-01-22
    相关资源
    最近更新 更多