为什么我的localStorage代码不起作用?

时间:2011-07-21 23:01:39

标签: javascript local-storage

即使用户回来,我也试图让div div消失并保持消失。它似乎没有做我想要的。当我按下按钮时,没有任何反应。甚至localStorage的价值都没有变化......

localStorage.done = localStorage.done || false;
$('#myButton').addEventListener('click', function() {
    if (!localStorage.done) {
        localStorage.done = true;
        $('#myDiv').style.display = "none";

    }
});

2 个答案:

答案 0 :(得分:6)

localStorage的代码实际上正在运行(即使它建议使用其getter / setter方法而不是直接属性访问)。

你的问题是:

$('#myButton').addEventListener('click', function() {

jQuery不知道你想要调用.addEventListener

.bind()
    localStorage.done = localStorage.done || false;
    $('#myButton').bind('click', function() {
        if (!localStorage.done) {
            localStorage.done = true;
            $('#myDiv').hide();
        }
    });

答案 1 :(得分:1)

localStorage仅存储字符串。因此,localStorage.done = false序列化为“false”。以下代码将解决您的问题(请参阅JSFiddle):

 localStorage.done = localStorage.done || "false";
 document.getElementById('myButton').addEventListener('click', function() {
   if (localStorage.done == "false") {
     localStorage.done = "true";
     document.getElementById('myDiv').style.display = "none";
   }
 });

注意,为了避免与jQuery混淆,我使用标准DOM“getElementById”。您也可以考虑使用“0”和“1”代替“true”和“false”。

虽然W3 Specification中没有此限制,但它适用于当前浏览器。有关详细信息,请参阅this post。快乐的编码!