[英]Insert/remove dark theme stylesheet toggle button
我試圖使這種暗模式開關在head
插入樣式表,並在單擊時插入本地存儲。 它應該在第二次單擊時將其禁用,但是問題是在第一次單擊時我得到了on
輸出,但是從第二次單擊起它就一直保持永遠off
。
如果頁面已經在運行深色主題,我還希望它具有其他條件,該開關將禁用插入的樣式表,並保持像這樣循環播放。
我願意擁有一個PHP替代方案。
$(function() {
var linkDarkMode;
$(".dark-theme").click(function() {
if (!linkDarkMode) {
linkDarkMode = $('<link rel="stylesheet" type="text/css" href="<?= get_template_directory_uri(); ?>/body/dark-theme.css">').appendTo('head')[0];
localStorage.setItem("theme", "dark");
console.log("on");
} else {
linkDarkMode.disabled = !linkDarkMode.disabled;
localStorage.removeItem("theme");
console.log("off");
}
});
});
第一次單擊后, linkDarkMode
將保留該值,因此,每個后續單擊處理程序調用將進入else
塊, if
檢查失敗。 只需使用另一個像isThemeDark
這樣的布爾值isThemeDark
保持當前主題的狀態,然后執行此操作
$(function() {
var linkDarkMode;
var isThemeDark = false;
$(".dark-theme").click(function() {
if (!linkDarkMode) {
linkDarkMode = $(
'<link rel="stylesheet" type="text/css" href="<?= get_template_directory_uri(); ?>/body/dark-theme.css">'
).appendTo("head")[0];
localStorage.setItem("theme", "dark");
console.log("on");
} else {
if (isThemeDark) {
linkDarkMode.disabled = true;
localStorage.removeItem("theme");
console.log("off");
} else {
linkDarkMode.disabled = false;
localStorage.setItem("theme", "dark");
console.log("on");
}
isThemeDark = !isThemeDark;
}
});
});
希望這可以幫助 !
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.