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 时的控制台打印:

键[长度],值[16]

4

2 回答 2

0

在您的示例中,您使用“长度”作为键名。但是由于长度已经是 localstorage 对象的属性,所以不能将其用作自定义关键字。尝试一下,看看它是否有效:

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

这是正确的语法

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

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

于 2013-01-01T14:24:47.910 回答