[英]How to store dark mode in session storage?
I am implementing dark mode on my website.我正在我的网站上实施暗模式。 I am trying to store the user preference as a session storage but my code does not work.
我试图将用户首选项存储为会话存储,但我的代码不起作用。
onload = function() {
if(sessionStorage.getItem("darkmode") === "true") {
sessionStorage.getItem("darkmode");
$( "body" ).addClass( "dark" );
$("#switch").addClass("switched");
sessionStorage.setItem("darkMode", "true");
}
}
(function($) { "use strict";
$(function() {
var header = $(".start-style");
$(window).scroll(function() {
var scroll = $(window).scrollTop();
if (scroll >= 10) {
header.removeClass('start-style').addClass("scroll-on");
} else {
header.removeClass("scroll-on").addClass('start-style');
}
});
});
//Animation
$(document).ready(function() {
$('body.hero-anime').removeClass('hero-anime');
});
//Menu On Hover
$('body').on('mouseenter mouseleave','.nav-item',function(e){
if ($(window).width() > 750) {
var _d=$(e.target).closest('.nav-item');_d.addClass('show');
setTimeout(function(){
_d[_d.is(':hover')?'addClass':'removeClass']('show');
},1);
}
});
//Switch light/dark
$("#switch").on('click', function() {
if ($("body").hasClass("dark")) {
//removes dark mode
$("body").removeClass("dark");
$("#switch").removeClass("switched");
sessionStorage.setItem('darkmode', 'false');
}
else {
$("body").addClass("dark");
$("#switch").addClass("switched");
sessionStorage.setItem('darkmode', 'true');
}
});
})(jQuery);
I have tried using localStorage before but there is a delay when refreshing the page before dark mode activates.我之前尝试过使用 localStorage,但是在激活暗模式之前刷新页面时会出现延迟。
I guess it is the problem that you used ===
sign and when you set the value of darkmode
you assigned it 'true' but you checked if it is "true", so these two things are not same if you use ===
sign.我想这是您使用
===
符号的问题,当您设置darkmode
的值时,您将其分配为“true”,但您检查了它是否为“true”,因此如果使用===
,这两件事就不一样了标志。
I think you can write like this:我认为你可以这样写:
Set value:设定值:
//Switch light/dark
$("#switch").on('click', function() {
if ($("body").hasClass("dark")) {
//removes dark mode
$("body").removeClass("dark");
$("#switch").removeClass("switched");
sessionStorage.setItem("darkmode", false);
}
else {
$("body").addClass("dark");
$("#switch").addClass("switched");
sessionStorage.setItem("darkmode", true);
}
});
Check value:检查值:
onload = function() {
if(sessionStorage.getItem("darkmode")) {
sessionStorage.getItem("darkmode");
$( "body" ).addClass( "dark" );
$("#switch").addClass("switched");
sessionStorage.setItem("darkMode", true);
}
}
Try to use same sign, if you set with "
sign then get with "
sign instead of '
.尝试使用相同的符号,如果你设置了
"
sign then get with "
符号而不是'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.