2015-11-17 55 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我发现为什么它确实不起作用。检查我更新的答案。 –