检索以某些单词开头的localStorage值

时间:2015-01-05 11:16:51

标签: jquery html5 storage local

我正在存储一些localStorage项目,如下所示:

var id = $(this).closest('.item').attr('data-id');
var title = $(this).closest('.item').attr('data-title');

var json ={"id":id,"title":title};
localStorage.setItem('clip ' +id, JSON.stringify(json));

给我......

  

Key ------------------------------ Value

     

剪辑14014_life-ring ---------- {“id”:“14014_life-ring”,“title”:“生命   戒指“}夹子14015_life-jacket -------   {“id”:“14015_life-jacket”,“title”:“Life Jacket”}

要检索/显示特定值,我现在使用:

for ( var i = 0, len = localStorage.length; i < len; ++i ) {
json = localStorage.getItem( localStorage.key( i ) );

var result = JSON.parse(json);

list.append("<li><input type=\"hidden\" name=\"id[]\" value=\"" + result['id'] + "\"><input type=\"hidden\" name=\"title[]\" value=\"" + result['title'] + "\"></li>”);

//console.log(result);
}

这样可以正常工作,但我还希望将一些其他更简单的项目(非JSON)存储为单独的键/值,例如输入字段值(通过检测键盘事件),即名称,电子邮件地址等。

如何编写 for 循环以便只显示以'clip'开头的键?

此外,我还希望能够只计算以“剪辑”开头的键,目前我只知道如何计算所有 localStorage项目的总量,这会使事情变得混乱其他项目存储...

$('.clip-total').html(localStorage.length);

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

function showKeys(onlyClipKeys) {

    var totalBeginningWithClip = 0;

    for (var i = 0, len = localStorage.length; i < len; i++) {
        var key = localStorage.key(i);
        json = localStorage.getItem(key);
        console.log(key);
        var result = JSON.parse(json);

        if (onlyClipKeys) {

            if (key.indexOf('clip') === 0) {
                totalBeginningWithClip++;
                list.append("<li>" + result['id'] + " - " + result['title'] + "</li>");
            }
        } else {
            list.append("<li>" + result['id'] + " - " + result['title'] + "</li>");
        }

    }

    return totalBeginningWithClip;
}

结帐this fiddle