为什么我的cookie没有更新?

时间:2015-11-17 19:01:09

标签: javascript jquery cookies

我正在使用按钮切换为网站制作黑暗模式。为了在更改页面时保持黑暗模式,我使用的是cookie。再次按下切换按钮时,暗模式被禁用但未保存,我不确定原因。

聚苯乙烯。我是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');
      });
    }

1 个答案:

答案 0 :(得分:0)

当您按下切换按钮时,您还想切换Cookie的True / False值。现在,您始终将其设置为True或False,具体取决于第一个状态。

使用// Example var app = express(); var bodyparser = require('body-parser'); app.use(bodyparser.urlencoded({extended: true}); ..... // var apiRouter = express.Router(); apiRouter.route('/blogPosts') .post(function(req, res) { var blogPost = new BlogPost(); blogPost.postbody = req.body.postbody; blogPost.save(function(err) { if (err) { return res.send(err); } res.json({ message: blogPost.postbody + "created"}) }); }) 作为值存储到cookie中以自动切换布尔值。

修改

它确实无法正常工作,我发现由于布尔值,它无法正常工作。 布尔值存储为字符串(! $.cookie('darkModeOn')"false"),因为"true"给出布尔值true,if始终执行。当您使用整数而不是布尔值时,这可以使用,但您也可以将if更改为:

if ( "false")

如果使用整数,它也有效:

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

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

另见这篇文章:jquery cookie set value to boolean true。 布尔值存储为字符串,因此会导致问题。