2013-07-27 41 views
0

好工作的時候,所以我用下面的if語句預置的應用程序的某些變量我做:使用Javascript初始化變量的localStorage不以功能

if(localStorage.s1 == undefined) { 
    localStorage.s1= 50 
} 
if(localStorage.s2 == undefined) { 
    localStorage.s2= 100 
} 

而且工作正常。有一個關於這些預置十二,所以通過使用下面的函數,我重新分解它:

function setterfunc(targetedelement, presetting) { 
    if(localStorage.targetedelement == undefined) { 
     localStorage.targetedelement = presetting; 
    } 
} 

但是,當我把它與

setterfunc(foobar, 342) 

谷歌瀏覽器的控制檯只是告訴我:

Uncaught ReferenceError: foobar is not defined 

任何幫助?重複if語句的詳細方式完美地工作。

回答

1

使用括號標記:

function setterfunc(targetedelement, presetting) { 
    if(localStorage[targetedelement] == undefined) { 
     localStorage[targetedelement] = presetting; 
    } 
} 
setterfunc('foobar', 342) 

setItemgetItem存取:

function setterfunc(targetedelement, presetting) { 
    if(localStorage.getItem(targetedelement) == undefined) { 
     localStorage.setItem(targetedelement) = presetting; 
    } 
} 
setterfunc('foobar', 342) 

旁註:要小心,localStorage只存儲字符串。所以如果你想處理數字,你最好解析你從本地存儲器讀取的內容。

+0

感謝您的回答。你能澄清你的意思嗎只存儲字符串?整數342似乎由Chrome存儲好嗎? – Starkers

+1

342被存儲爲字符串「342」。當你稍後讀取這個值時,你可以使用'Number(x)''parseInt(x)'或者只是'x * 1'將它轉換回數字。 –

+0

輝煌。謝謝你們, – Starkers

0

的原因錯誤是字符串foobar的需要被引用,否則JS正在尋找該名稱的變量:

slidersetter('foobar', 342); 

,但你的函數被命名爲setterfunc,不slidersetter

+0

啊,關於函數名稱的愚蠢錯誤,感謝您的發現 – Starkers