使用Javascript初始化localStorage变量在函数中不起作用

时间:2013-07-27 19:54:30

标签: javascript local-storage

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

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

这很好用。这些预设大约有12个,所以我通过使用以下函数重新考虑了它:

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

但是当我用

打电话时
setterfunc(foobar, 342)

Google Chrome控制台告诉我:

Uncaught ReferenceError: foobar is not defined 

有任何帮助吗?重复if语句的冗长方式非常有效。

2 个答案:

答案 0 :(得分: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只存储字符串。因此,如果您想处理数字,您最好解析从本地存储中读取的内容。

答案 1 :(得分:0)

错误的原因是需要引用字符串foobar,否则JS正在寻找此名称的变量:

slidersetter('foobar', 342);

但您的功能名为setterfunc,而不是slidersetter