HTML5 - window.localStorage检索数据

时间:2012-03-22 19:12:12

标签: jquery html5

我目前在本地数据库中的数据如下:

    window.localStorage.setItem('QQIDVAL' + ID, JSON.stringify(this));

如何检索本地存储中的所有数据并查找以“QQ”开头的数据

另外,我如何选择要跟踪的列,因为JSON.stringify(this)有很多列,但我只需要其中的一部分。

4 个答案:

答案 0 :(得分:1)

您可以在localStorage中存储数组。

喜欢的东西(我没有管理Jsonify。你可以使用Lawnchair来促进这些操作)

window.localStorage.setItem('QQ', {items: [] });

function addItem(id, json) {
  var o = window.localStorage.getItem('QQ');
  o.items[id] = json;
  window.localStorage.setItem(o);
}

function getItem(id) {
  return window.localStorage.getItem('QQ').items[id];
}

function getAllItems() {
   return window.localStorage.getItem('QQ').items;
}

function printAllItems() {
   var all = getAllItems();
   for (id in all) {
     console.log(id +" => "+ all[id]);
   }
}

答案 1 :(得分:0)

您应该使用数据库而不是存储(用于键值对)。尝试将IndexedDB或Web SQL作为关键字进行谷歌搜索。

答案 2 :(得分:0)

Sencha Touch和Backbone等许多框架都有一些使用localStorage模拟数据库功能的基本功能。如果您对推出自己的解决方案感到兴奋,我建议您做一些更像这样的事情:

// get the user store
var users = getUsers();
var john = user["john1234"];

// get all of the existing users
function getUsers() {
  return JSON.parse(window.localStorage.users) || {};
}

// save users
function saveUsers(users) {
  window.localStorage.users = JSON.stringify(users);
}

// add a user
function addUser(user) {
  var id = user.id || new Date().getTime();
  users[id] = user;
}

所以我的建议不是基于字符串组合事物而是使用标准

将它们分成单独的集合或商店

这绝不是您问题的具体答案,但它可能对您有帮助!

答案 3 :(得分:0)

您可以利用localStorage被视为对象的事实,并执行类似的操作(遍历密钥并检查其名称):

​for(dataObj in localStorage) {
    if(dataObj.charAt(0) == Q && dataObj.charAt(1) == Q) {
        // do whatever with your data object, it starts with QQ
        var myObj = localStorage[dataObj];
    }
}​

您还可以将if语句更改为:

if(dataObj.substr(0,2) == "QQ") { // do your thing

现在没有对substr()文档的引用,不记得这是否是正确的语法。