【问题标题】:Save the results of a dark mode function as a cookie将暗模式功能的结果保存为 cookie
【发布时间】:2021-02-13 23:05:59
【问题描述】:

我可以在明暗模式之间进行切换,但我似乎无法弄清楚如何获取 js 函数的结果以在页面和重新加载之间另存为 cookie。我到处寻找,只是找不到合适的表达方式。我似乎总是保存了 cookie,或者函数在没有 cookie 的情况下执行。只是不能让两者都工作。这是我到目前为止所拥有的。 HTML:

        <button class="dark-mode" id="theme" onclick="togTheme()">Dark Mode</button>
    

CSS:

:root {
  --navHeight: 70px;
  --darkHue: #B0BEC5;
  --darkShade: #37474F;
  --lightShade: #455A64;
  --white: #FFFFFF;
  --hue: #ECEFF1;
  --shade: #263238;
  --black: #222222;
  --gray: #eee;
  --blue: #0071BC
}

.light-theme {
  --themeDropDownBg: var(--goldCrayola);
  --themeIconBorderColor: var(--sage);
  --navBg: var(--hue);
  --navLinkHoverBg: var(--darkHue);
  --mainBg: var(--white);
  --fontColor: var(--black);
}

.dark-theme {
  --themeDropDownBg: var(--msuGreen);
  --themeIconBorderColor: var(--richBlackForeground);
  --navBg: var(--lightShade);
  --navLinkHoverBg: var(--darkShade);
  --mainBg: var(--shade);
  --fontColor: var(--hue);
}



* {
  color: var(--fontColor);
  font-family: 'Risque';
  transition: background 500ms ease,
    padding 500ms linear;
}

body {
  margin: 0px;
  padding: 0px;
  background: var(--mainBg);
}

nav {
  background: var(--navBg);
  color: var(--fontColor);
}

nav a:hover {
  background-color: var(--navLinkHoverBg);
  color: var(--blue);
}

nav button {
  background: var(--navBg);
  color: var(--fontColor);
}

nav button:hover {
  background-color: var(--navLinkHoverBg);
  color: var(--blue);
}

Javascript:

function togTheme() {
  var element = document.body;
  element.classList.toggle("dark-theme");
  var x = document.getElementById("theme");
  if (x.innerHTML === "Dark Mode") {
    x.innerHTML = "Light Mode";
  } else {
    x.innerHTML = "Dark Mode";
  }
}

任何帮助将不胜感激。

【问题讨论】:

标签: javascript html css cookies


【解决方案1】:
const setCookie = (name, value, exdays) => {
    const d = new Date(); // Gets current date
    d.setTime(d.getTime() + (exdays*24*60*60*1000)); //calculates the date when it has to expire
    const expires = "expires="+ d.toUTCString();
    document.cookie = name + "=" + value + ";" + expires + ";path=/"; // sets the cookie
}

使用此功能,您可以轻松添加 cookie。给出模式的类型作为值,cookie 必须过期的天数以及 cookie 的名称。

为了在主题之间切换,我个人会使用 localstorage 或将模式保存在您的后端数据库中。

【讨论】:

  • 谢谢,您介意解释一下我如何将它保存到本地存储吗?
  • 我认为这个链接可以比我解释得更好;)w3schools.com/jsref/prop_win_localstorage.asp
  • 我已经浏览过该页面,但对我没有帮助...
  • const togTheme = () => { const theme = localstorage.getItem(''theme); if(!theme) {localstorage.setItem('theme', 'Light')} const element = document.body; element.classList.toggle("黑暗主题"); const x = document.getElementById("theme"); if (theme === "Dark") { localstorage.setItem('theme', 'Light'); x.innerHTML = "灯光模式"; } else { localstorage.setItem('theme', 'Dark'); x.innerHTML = "黑暗模式"; }
猜你喜欢
  • 2022-01-10
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2021-11-04
  • 2020-12-14
  • 1970-01-01
  • 2017-07-17
  • 1970-01-01
相关资源
最近更新 更多