2011-07-21 31 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