0

好的,所以我使用以下 if 语句来预设我正在制作的应用程序的某些变量:

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)

Google Chrome 控制台只是告诉我:

Uncaught ReferenceError: foobar is not defined 

有什么帮助吗?重复 if 语句的冗长方法非常有效。

4

2 回答 2

1

使用括号表示法:

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

setItemandgetItem访问器:

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

旁注:注意localStorage只存储字符串。所以如果你想处理数字,你最好解析你从本地存储中读取的内容。

于 2013-07-27T19:55:52.083 回答
0

报错的原因是字符串 foobar 需要被引用,否则 JS 是在寻找这个名字的变量:

slidersetter('foobar', 342);

但你的功能是命名的setterfunc,而不是slidersetter

于 2013-07-27T20:00:23.523 回答