0

これはおそらく単純な構文エラーなどですが、私は一生それを見ることができません。私は以前、はるかに複雑な構造で問題なくlocalStorageを使用したことがあるので、これが機能しない理由に戸惑います。

$('.symbols').click(function(){
    if ($(this).attr("checked") == "checked"){
        setPreferences("symbols", true);
    } else {
        setPreferences("symbols", false);
    }
});

$('.length').on('change', function() {
    setPreferences("length", $(this).attr('value'));
});

function setPreferences (key, value) {
    console.log("Key[ " + key + " ], Val[ " + value + "]");
    localStorage[key] = value; // I've also tried "" + value
}

記号の設定は問題なく機能しますが、長さは保存されません。console.logは、対応するイベントに目的のキーと値のペアを出力します。Chromeデバッガーから、スペースを割り当てようとしていることがわかります。これは、検査時に存在しないだけです。発生したイベントの順序は重要ではなく、「シンボル」のみが正しく保存されます。

選択した「長さ」から値16を選択した場合のコンソール印刷:

Key [length]、Val [16]

4

2 に答える 2

0

これが正しい構文です

$('.length').on('change', function() {
    setPreferences("length", $(this).val());
});

val()入力要素の値を取得することを許可します:http://api.jquery.com/val/

于 2013-01-01T14:24:47.910 に答える
0

この例では、キー名として「length」を使用しています。ただし、長さはすでにlocalstorageオブジェクトのプロパティであるため、カスタムキーワードとして使用することはできません。それを試して、それが機能するかどうかを確認してください:

setPreferences("customlength", $(this).val());// as suggested on other answer, better to use .val()
于 2013-01-01T14:31:35.207 に答える