2013-01-01 110 views
0

這可能是一個簡單的語法錯誤或類似,但我不能爲我的生活看到它。我之前在更復雜的結構上使用localStorage時沒有問題,所以我很困惑爲什麼這樣做不起作用。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]

回答

0

在你的例子中,你使用'length'作爲鍵名。但是由於長度已經是本地存儲對象的屬性,因此不能將其用作自定義關鍵字。 試試看看它的工作原理:

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

啊,我應該考慮一下。謝謝,它做到了:) –

0

這裏是正確的語法

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

val()允許檢索輸入元素的值:http://api.jquery.com/val/

+0

感謝您的回覆。然而,正如我所說的console.log打印正確的鍵和值 - 所以問題不是該函數傳遞一個空值。 –

+1

您是否嘗試過使用除「length」之外的其他單詞作爲密鑰?它可能是一個特殊的關鍵字。 – sdespont

+0

@roasted擊敗你,問題確實是保留關鍵字「長度」。再次感謝您的回覆。 –