2012-01-19 72 views
2

我正在建立一個聯繫人列表樣式應用程序,該應用程序使用此LocalStorage功能在用戶計算機上保存聯繫人信息。具有兩個以上值的HTML5 LocalStorage

現在,我遇到的問題是,據我所知,每個條目只能存儲兩個值;名稱和價值。

我有點失落,因爲我想不出一個辦法解決這個問題。有什麼建議麼?我希望爲特定條目存儲大約4/5個字段的信息。

問候, 傑克·亨特

+2

'JSON' in string? –

+1

@Marek,這似乎很合理 –

+1

@MarekSebera - 你應該張貼作爲答案。這幾乎是每個人都這樣做的。 – Anurag

回答

5

考慮節省了單獨的鍵字段每個數據類型的集合作爲以String格式

// 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); 

一個JSON如果你想知道,爲什麼是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

好的,謝謝。我正在閱讀關於JSON的內容。從來沒有使用它,你看到。這段時間還沒有使用JavaScript。謝謝。 –

+0

不客氣@VisionIncision –

0

可以在localStorage的數據保存爲JSON對象。然後KEY可以是「人」的東西,然後VALUE可以是一組「人」對象。 JavaScript中會出現任何類型的CRUD,並且LocalStorage只會用作持久性介質。

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' 
0
For Example we Have Two Input Element name and email, ok then we have to store key and value pair 

變種名稱=的document.getElementById( 'demo1的')值;

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

localStorage.setItem(「name」,name);

localStorage.setItem(「email」,email);