我希望使用此LocalStorage功能构建一个联系人列表样式应用程序,用于在用户计算机上保存联系信息。
现在,我遇到的问题是,据我所知,每个条目只能存储两个值;名称和价值。
我有点不知所措,因为我想不出办法解决这个问题。有什么建议?我希望为给定的条目存储大约4/5的信息字段。
此致 杰克亨特
答案 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( “电子邮件”,电子邮件);