Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么不是';我的饼干没有更新吗?_Javascript_Jquery_Cookies - Fatal编程技术网

Javascript 为什么不是';我的饼干没有更新吗?

Javascript 为什么不是';我的饼干没有更新吗?,javascript,jquery,cookies,Javascript,Jquery,Cookies,我正在使用按钮切换为一个站点创建一个黑暗模式。为了在更改页面时保存暗模式,我使用cookies。再次按下切换键时,暗模式被禁用,但不保存,我不确定原因 另外,我是javascript新手,所以这可能是一个愚蠢的错误 if ($.cookie('darkModeOn')){ $('html').toggleClass('dark-mode'); $('#dark-toggle').click(function(){ $.cookie('darkModeOn',

我正在使用按钮切换为一个站点创建一个黑暗模式。为了在更改页面时保存暗模式,我使用cookies。再次按下切换键时,暗模式被禁用,但不保存,我不确定原因

另外,我是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');
      });
    }

当您按下切换按钮时,您还希望切换cookie的真/假值。现在,您总是将其设置为True或False,具体取决于第一个状态

使用
!$。cookie('darkModeOn')
作为值存储到cookie中,以自动切换布尔值


编辑

它确实不起作用,我发现它不起作用是因为布尔值。 布尔值存储为字符串(
“false”
“true”
),因为
if(“false”)
给出布尔值true,所以if总是被执行。当您使用整数而不是布尔值时,这将起作用,但您也可以将if更改为:

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

如果使用整数,它也可以工作:

另请参阅此帖子:。
布尔值存储为字符串,因此会导致问题。

hmm,这似乎对我不起作用。同样的问题。谢谢你@洛甘曼努埃尔:我发现了它确实不起作用的原因。检查我的最新答案。
$('#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');
  }