2015-11-17 79 views
2

我正在使用按鈕切換爲網站製作黑暗模式。爲了在更改頁面時保存黑暗模式,我正在使用Cookie。當再次按下切換鍵時,黑暗模式被禁用,但不保存,我不知道爲什麼。爲什麼我的cookie不更新?

Ps。我是新來的JavaScript,所以這可能是一個愚蠢的錯誤。

if ($.cookie('darkModeOn')){ 
     $('html').toggleClass('dark-mode'); 

     $('#dark-toggle').click(function(){ 
     $.cookie('darkModeOn', false, { expires: 7 }); 
     $('html').toggleClass('dark-mode'); 
     }); 
    } 
    else 
    { 
     $('#dark-toggle').click(function(){ 
     $.cookie('darkModeOn', true, { expires: 7 }); 
     $('html').toggleClass('dark-mode'); 
     }); 
    } 

回答

0

當您按下切換按鈕時,您還想切換cookie的True/False值。現在,您總是根據第一個狀態將其設置爲True或False。

使用! $.cookie('darkModeOn')作爲存儲到cookie中的值來自動切換布爾值。


編輯

這確實是不工作的,我發現它不工作,因爲布爾值。 布爾值存儲爲字符串("false""true"),因爲if ("false")給出了布爾值true,所以if始終被執行。當您使用整數代替布爾值,這一切工作,但你也可以改變,如果到:

if ($.cookie('darkModeOn')=="true") //... 

如果你使用整數它也可以工作:

https://jsfiddle.net/6m2ydrh2/12/

$('#dark-toggle').click(function(){ 
     //this gets executed each click so we need to toggle the boolean value. 
     if ($.cookie('darkModeOn')==0){ 
      $.cookie('darkModeOn', 1, { expires: 7 }); 
     }else{ 
      $.cookie('darkModeOn', 0, { expires: 7 }); 
     } 
     console.log("cookie:"+$.cookie('darkModeOn')) ; 
     $('#test').toggleClass('dark-mode'); 
    }); 
    if ($.cookie('darkModeOn')){ 
     //this is only executed on load 
     $('#test').toggleClass('dark-mode'); 
    } 

另見這篇文章:jquery cookie set value to boolean true。 布爾值被存儲爲字符串並因此導致問題。

+0

嗯,這似乎並沒有爲我工作。同樣的問題。謝謝你! –

+0

@LoganManuel我發現爲什麼它確實不起作用。檢查我更新的答案。 –