2012-10-23 50 views
1

Possible Duplicate:
HTML5 localStorage: check if item isset檢查localStorage的值存在

我使用localStorage的制定煎茶觸摸2個應用程序。

我從本地存儲的值是這樣的:

var localStore = Ext.getStore('localStore'); 
localStore.getAt(0).data.name1 //get the value for key 'name1' 

但在第一次訪問本地存儲是空的。我如何檢查密鑰是否存在? 當我做:

if(localStore.data.name1 === null) 

我得到:

Uncaught TypeError: Cannot read property 'name1' of undefined 
+0

真的嗎? http://www.bennadel.com/blog/2105-Exploring-HTML5-s-localStorage-Persistent-Client-Side-Key-Value-Pairs.htm –

+0

我認爲有一個區別,因爲我想使用sencha touch,而不是原生javascript功能... – Nico

+0

無論如何,這裏的問題是你做了兩件不同的事情。在第一種情況下(localStore.getAt(0).data.name1),您正在訪問商店的第一條記錄的數據,然後訪問該記錄的'name1'屬性,這是合理的。但是,然後(localStore.data.name1),您試圖直接訪問商店的數據,並且此屬性不存在。因此localStore.data.name1返回undefined。 –

回答

0

請參見本jsFiddle例子。 localStore.getItem(名稱)。注意getItem是一個函數。

var obj = {foo: 'bar'}; 

// set 
localStorage.setItem('testObject', JSON.stringify(obj)); 

// get 
var get = localStorage.getItem('testObject'); 

console.log(JSON.parse(get)); 

+1

當我嘗試這個時,我總是得到一個空值。什麼是localStorage?我的localStore是sencha觸摸本地存儲代理,沒有方法getItem:Uncaught TypeError:Object [object Object]沒有方法getItem – Nico

+0

啊,我明白了。我想我誤解了這個問題。所以只有第一次嘗試是未定義的。如果是這樣,我會嘗試if(typeof localStorage.getItem ==='function')來查看它是否在使用之前定義。 – krg

+0

感謝您的幫助,我發現如果不存在數據,localStore.data.length爲0,如果數據存在,則爲> 0。我想我會用那個... – Nico