2011-07-21 20 views
2

我试图让div div消失,即使用户回来时也不会离开。它似乎没有做我想要的。当我按下按钮时,没有任何反应。甚至没有的localStorage的变化值...为什么我的localStorage代码不工作?

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

    } 
}); 
+0

我发布了代码.. – 0x499602D2

+0

'localStorage.done = localStorage.done ||假' - 这个表达有什么意义? –

+0

它设置了一个默认值 – ghayes

回答

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(); 
     } 
    }); 
+0

如果我理解正确,OP希望DIV在后续访问中保持隐藏状态。因此,应立即检查:'if(localStorage.done){div.hide(); }' –

+0

'localStorage.done = localStorage.done ||假;' - 这不是无用的吗?它所做的只是将关键字设置为'false',如果它是'未定义的'。 –

+0

我没有使用JQuery。我从零开始编写了$函数,并试图在用户按下按钮后永远隐藏一个div – 0x499602D2

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”而不是“真”和“假”。

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

+0

我没有使用JQuery。我从头开始编写'$'函数,并试图在用户按下按钮 – 0x499602D2

+0

后立即使div不可见。我现在了解您的问题(与localStorage对象的序列化有关)。查看我的翻新后的解决方案。请享用! – ghayes