Javascript 为什么饼干在一段时间后没有改变?还是返回最后一个值?

Javascript 为什么饼干在一段时间后没有改变?还是返回最后一个值?,javascript,cookies,Javascript,Cookies,在一次或两次更改后或刷新页面时,Cookie值不会更改 它被用来改变网站的模式(夜灯)。 谢谢你的帮助 window.onload = function (){ changeMode(); } function setCookie(cname,cvalue,exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expir

在一次或两次更改后或刷新页面时,Cookie值不会更改 它被用来改变网站的模式(夜灯)。 谢谢你的帮助

window.onload = function (){
    changeMode();
}

function setCookie(cname,cvalue,exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires=" + d.toGMTString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
  }
  
  function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i < ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == ' ') {
        c = c.substring(1);
      }
      if (c.indexOf(name) == 0) {
        return c.substring(name.length, c.length);
      }
    }
    return "";
  }
  
  function changeMode() {
    var user=getCookie("user");
    if (user != "") {
      if(user == "light"){
        dark();
        setCookie("user", "dark", 30);
      }else if(user == "dark"){
        light();
        setCookie("user", "light", 30);
      }
    } else {
       user = "light";
       if (user != "" && user != null) {
         setCookie("user", user, 30);
         light();
       }
    }
  }
window.onload=函数(){
changeMode();
}
函数setCookie(cname、cvalue、exdays){
var d=新日期();
d、 设置时间(d.getTime()+(exdays*24*60*60*1000));
var expires=“expires=“+d.togmString();
document.cookie=cname+“=”+cvalue+”;“+expires+”;path=/”;
}
函数getCookie(cname){
变量名称=cname+“=”;
var decodedCookie=decodeURIComponent(document.cookie);
var ca=decodedCookie.split(“;”);
对于(变量i=0;i
文件:

结果是:

我可以发现我的代码有什么问题,并且没有理解如何使用cookies第一个问题是我必须添加另一个函数来记住浏览器是的,我做了类似的事情,但我在刷新后更改了模式,因为我在onload函数中有change mode函数。。。第二个错误是,我认为如果我们在到期日期之前可以更新cookies,但事实并非如此,因此我删除了要更新的到期日期并重新设置

你可以在任何地方自由使用我的脚本,谢谢你的帮助

守则:

window.onload = function (){
  rememberMode();
}

function setCookie(cname,cvalue) {
    document.cookie = cname + "=" + cvalue;
  }
  
  function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i < ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == ' ') {
        c = c.substring(1);
      }
      if (c.indexOf(name) == 0) {
        return c.substring(name.length, c.length);
      }
    }
    return "";
  }
  
  function rememberMode() {
    var user=getCookie("user");
    if (user != "") {
      if(user == "dark"){
        dark();
      }else if(user == "light"){
        light();
      }
    } else {
          setCookie("user", "light");
          light();
        }
    }

  function changeMode() {
    var user=getCookie("user");
    if(user == "light"){
      dark();
      setCookie("user", "dark");
    }else if(user == "dark"){
      light();
      setCookie("user", "light");
    }
  }

function dark() {
    document.getElementById("2").style.backgroundColor = "#171717";
    document.getElementById("h2").style.color = "#F1F1F1";
    document.getElementById("imod").src = "https://kurddoblaj.com/sun.gif";
    document.getElementById("search-box").style.backgroundColor = "#2A2A2A";
    document.getElementById("search").style.backgroundColor = "#2A2A2A";
    document.getElementById("search").style.color = "white";
    document.getElementById("z").style.color = "#595959";
    document.body.style.backgroundColor = "#171717";
    var elems = document.getElementsByClassName('post');
    for(var i = 0; i < elems.length; i++) {
        elems[i].style.backgroundColor = "#2A2A2A";
        elems[i].style.color = "#F1F1F1";
    }
}

function light() {
    document.getElementById("2").style.backgroundColor = "#E3E3E3";
    document.getElementById("h2").style.color = "black";
    document.getElementById("imod").src = "https://kurddoblaj.com/moon.gif";
    document.getElementById("search-box").style.backgroundColor = "white";
    document.getElementById("search").style.backgroundColor = "white";
    document.getElementById("search").style.color = "black";
    document.getElementById("z").style.color = "black";
    document.body.style.backgroundColor = "#E3E3E3";
    var elems = document.getElementsByClassName('post');
    for(var i = 0; i < elems.length; i++) {
        elems[i].style.backgroundColor = "white";
        elems[i].style.color = "black";
    }
}
window.onload=函数(){
记忆电极();
}
函数setCookie(cname,cvalue){
document.cookie=cname+“=”+cvalue;
}
函数getCookie(cname){
变量名称=cname+“=”;
var decodedCookie=decodeURIComponent(document.cookie);
var ca=decodedCookie.split(“;”);
对于(变量i=0;i
当我从我的服务器上运行JavaScript(不是本地运行,因为本地cookie已关闭)并放入console.log以查看getCookie的结果时,每次刷新时,它都会根据需要从空变为亮变为暗,从亮变为暗。你确定cookies没有被设置为属性,并且问题不在你的明暗功能中(它们是怎么做的)?我现在已经尝试了你的站点,它似乎正在工作(太阳变为月亮,反之亦然)。还有问题吗?注意:如果你在欧洲看到的网站上设置cookie,你需要告诉用户并要求他们接受-请参阅GDPR和欧盟的信息。当然,我会在项目运行后通知用户接受,但该项目是针对伊拉克库尔德斯坦的,但他们也需要感谢您的建议,我确信代码在3到4次之后都能正常工作,我认为有一些小故障。这是铬的问题吗?或者是我的错?我想你可能有时间问题,如果我很快刷新(按浏览器栏中的enter键),我可以让它出现故障,但如果我等几秒钟(使用Edge,基本上与Chrome相同),很多次都没问题。你能在回答中输入你从月球移动到太阳的代码吗?这纯粹是通过CSS实现的吗?或者,当用户单击窗口上的enter键时(而不是通过浏览器地址栏上的enter键刷新)。@AHaworth你是对的,我用另一个浏览器测试了它,但它没有