0

さて、次の 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 ステートメントを繰り返す冗長な方法は完全に機能します。

4

2 に答える 2

1

ブラケット表記を使用します。

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

またはsetItemおよびgetItemアクセサ :

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

補足:localStorage文字列のみを格納することに注意してください。したがって、数値を処理する場合は、ローカル ストレージから読み取ったものを解析することをお勧めします。

于 2013-07-27T19:55:52.083 に答える