• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmiana dark / light w ID nie w body

Object Storage Arubacloud
0 głosów
60 wizyt
pytanie zadane 23 sierpnia 2023 w JavaScript przez lalanablanalala Bywalec (2,090 p.)
// ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲ CHANGE THEME ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
const switchButton = document.querySelector("#ctheme");
let theme = localStorage.getItem("theme");

switchButton.addEventListener("click", () => {
    if (theme === "light") {
        document.querySelector("body").classList.remove("light");
        document.querySelector("body").classList.add("dark");
        theme = "dark";
    } else {
        document.querySelector("body").classList.remove("dark");
        document.querySelector("body").classList.add("light");
        theme = "light";
    }

    localStorage.setItem("theme", theme);
});

if (theme === "light") {
    document.querySelector("body").classList.add("light");
}

if (theme === "dark") {
    document.querySelector("body").classList.add("dark");
}

Kod wyżej służy do zmiany stylu css i sprawdza się elegancko. Jednak na tej samej stronie chciałbym użyć tego kodu do ponownego użycia z innego przycisku także zmieniłem go tak: 

// ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲ CHANGE THEME ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
const switchButton = document.querySelector("#ctheme");
const switchButton2 = document.querySelector("#mctheme");
let theme = localStorage.getItem("theme");

switchButton.addEventListener("click", () => {
    if (theme === "light") {
        document.querySelector("body").classList.remove("light");
        document.querySelector("body").classList.add("dark");
        theme = "dark";
    } else {
        document.querySelector("body").classList.remove("dark");
        document.querySelector("body").classList.add("light");
        theme = "light";
    }

    localStorage.setItem("theme", theme);
});

switchButton2.addEventListener("click", () => {
    if (theme === "light") {
        document.querySelector("body").classList.remove("light");
        document.querySelector("body").classList.add("dark");
        theme = "dark";
    } else {
        document.querySelector("body").classList.remove("dark");
        document.querySelector("body").classList.add("light");
        theme = "light";
    }

    localStorage.setItem("theme", theme);
});

if (theme === "light") {
    document.querySelector("body").classList.add("light");
}

if (theme === "dark") {
    document.querySelector("body").classList.add("dark");
}

  dodałem ino linijkę

const switchButton2 = document.querySelector("#mctheme");

oraz switchButton2.addEventListener("cli.... istnieje jakaś lepsza metoda? :P   

1 odpowiedź

+1 głos
odpowiedź 23 sierpnia 2023 przez VBService Ekspert (253,400 p.)
wybrane 24 sierpnia 2023 przez lalanablanalala
 
Najlepsza

Sprawdź np. taki zapis

window.addEventListener('DOMContentLoaded', DOMload);

function DOMload() {
  initializeTheme();
  // ▲▲▲▲▲▲▲▲▲ CHANGE THEME ▲▲▲▲▲▲▲▲▲
  const switchButton1 = document.querySelector("#ctheme");
  const switchButton2 = document.querySelector("#mctheme");
  switchButton1.addEventListener('click', toggleTheme);
  switchButton2.addEventListener('click', toggleTheme);  
}

function toggleTheme() {
  let theme = localStorage.getItem('theme');
  document.querySelector('body').classList.toggle(theme);
  theme = (theme == 'light')? 'dark':'light';
  document.querySelector('body').classList.toggle(theme);
  localStorage.setItem('theme', theme);
}

function initializeTheme() {
  const theme = localStorage.getItem('theme') || 'light';
  document.querySelector('body').classList.add(theme);
}

 

komentarz 24 sierpnia 2023 przez lalanablanalala Bywalec (2,090 p.)
Dziękuje, działa razem nawet kiedy stary kod został pod inną stroną

Podobne pytania

0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 22 sierpnia 2023 w JavaScript przez lalanablanalala Bywalec (2,090 p.)
0 głosów
2 odpowiedzi 385 wizyt
pytanie zadane 22 grudnia 2020 w C i C++ przez warzywko13 Użytkownik (840 p.)
0 głosów
2 odpowiedzi 433 wizyt
pytanie zadane 2 marca 2020 w C i C++ przez krynol Nowicjusz (120 p.)

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...