具有两个以上值的HTML5 LocalStorage

时间:2012-01-19 23:12:04

标签: javascript html5

我希望使用此LocalStorage功能构建一个联系人列表样式应用程序,用于在用户计算机上保存联系信息。

现在,我遇到的问题是,据我所知,每个条目只能存储两个值;名称和价值。

我有点不知所措,因为我想不出办法解决这个问题。有什么建议?我希望为给定的条目存储大约4/5的信息字段。

此致 杰克亨特

4 个答案:

答案 0 :(得分:5)

考虑将每个数据类型的集合保存在单独的键字段中,作为字符串格式的JSON

// myCollection contains three objects, filled with custom type data, in array
var myCollection = [{},{},{}]
function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}
localStorage['first_collection'] = JSON.stringify(myCollection, replacer);

如果你想知道为什么会有replacer函数,请看下面的第一个链接。
推荐的json.org

直接做事方式

http://www.json.org/js.html
JSON to string variable dump
JSON to string in Prototype
https://developer.mozilla.org/en/JSON
http://api.jquery.com/jQuery.parseJSON/

答案 1 :(得分:0)

您可以将LocalStorage中的数据另存为JSON对象。然后,KEY可以是“人”之类的东西,然后VALUE可以是“人”对象的数组。任何类型的CRUD都会出现在javascript中,而LocalStorage只会用作持久性介质。

答案 2 :(得分:0)

我之前做过这个,我不知道它是否有点脏,但它对我有用。我所做的是重写存储原型,以便我可以存储对象。

首先,我“保存”原始方法:

Storage.prototype._setItem = Storage.prototype.setItem;
Storage.prototype._getItem = Storage.prototype.getItem;

然后我用新的重写:

Storage.prototype.setItem = function(key, object){
    if(typeof object == 'object'){
        this._setItem(key, JSON.stringify(object));
    }
    else{
        this._setItem(key, object);
    }
} 
Storage.prototype.getItem = function(key){
    var val = this._getItem(key);
    try{
        val = JSON.parse(val);
    }catch(e){}
    return val;
}

有了这个,您可以将其用作:

localStorage.setItem('test', {value: 1}); // or localStorage.setItem('test', '{value: 1}')
localStorage.setItem('test2', [3,2,1]); // or localStorage.setItem('test2', '[3,2,1]');
localStorage.setItem('test3', '{no object stuff');

使用getItem

检索相同的数据
localStorage.getItem('test');  // Object: {value: 1}
localStorage.getItem('test2'); // Array: [3,2,1]
localStorage.getItem('test3'); // String: '{no object stuff'

答案 3 :(得分:0)

For Example we Have Two Input Element name and email, ok then we have to store key and value pair

var name = document.getElementById('demo1')。value;

var email = document.getElementById('demo2')。value;

localStorage.setItem( “姓名”,名字);

localStorage.setItem( “电子邮件”,电子邮件);