localStorage:第二个值没有存储?

时间:2013-01-01 14:21:01

标签: jquery local-storage

这可能是一个简单的语法错误或类似,但我不能为我的生活看到它。我之前在更复杂的结构上使用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]

2 个答案:

答案 0 :(得分:0)

这是正确的语法

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

val()允许检索输入元素的值:http://api.jquery.com/val/

答案 1 :(得分:0)

在您的示例中,您使用'length'作为键名。但由于length已经是localstorage对象的属性,因此不能将其用作自定义关键字。 试试看,看看它是否有效:

setPreferences("customlength", $(this).val());// as suggested on other answer, better to use .val()