Ugrás a tartalomra

11. nap

Jelmagyarázat

  • document: A document az a globális objektum a böngészők JavaScript környezetében, amely reprezentálja az aktuális HTML dokumentumot. Segítségével hozzáférhetünk az aktuális oldalon található elemekhez és manipulálhatjuk azokat.
  • document.querySelector(): Ez a metódus az első elemet adja vissza a megadott CSS szelektor alapján.
  • document.getElementById(): Ez a metódus visszaadja az azonosítójával megegyező első elemet az aktuális dokumentumban.
  • new Date().getFullYear(): Ez a kifejezés létrehoz egy új Date objektumot, ami a jelenlegi dátumot és időt reprezentálja, majd a getFullYear() metódussal kinyeri belőle az évet.
  • ELEMENT.addEventListener(ESEMÉNY, FÜGGVÉNY): Ez a függvény lehetővé teszi egy eseményfigyelő függvény hozzáadását egy HTML elemhez. Amikor az adott esemény bekövetkezik az elemen (pl. 'click', 'input', 'change' stb.), akkor a megadott függvény automatikusan végrehajtódik.
  • document.documentElement.setAttribute(KULCS, ÉRTÉK): Ez a függvény lehetővé teszi egy attribútum beállítását a dokumentum gyökéreleménél (általában a <html> elem). A kulcs és az érték paraméterek segítségével megadhatjuk az attribútum nevét és értékét, ami változtathatja az elem megjelenését vagy működését.
  • localStorage.setItem(KULCS, ÉRTÉK): Ez a függvény lehetővé teszi egy adatpár (kulcs-érték páros) hozzáadását vagy felülírását a helyi tárolásban (localStorage) a böngészőben. A kulcs és az érték paraméterekkel megadhatjuk az adatot, amit tárolni szeretnénk.
  • localStorage.getItem(KULCS, ÉRTÉK): Ez a metódus visszaadja az adott kulcshoz tartozó értéket a helyi tárolásból (localStorage). Megadhatjuk a kulcsot, amely alapján keresni szeretnénk az adatot, és a függvény visszaadja az ezzel a kulccsal tárolt értéket.

Téma váltó

A második műveletünk a téma váltó implementálása lesz, amely lehetővé teszi a felhasználók számára, hogy váltogassanak a világos és sötét témák között.

1. HTML elem kiválasztása

const toggleSwitch = document.querySelector(
  '.theme-switch input[type="checkbox"]'
);

Ez a sor kiválasztja a checkbox elemet a theme-switch osztályú elemen belül.

2. Téma váltó függvény

A függvények olyan kódblokkok, amelyeket arra terveztek, hogy egy adott feladatot hajtsanak végre. Képesek bemeneteket (paramétereket) fogadni, műveleteket végrehajtani, és értéket visszaadni. Ebben az esetben a switchTheme függvény egy objektumot e vesz bemenetként (ami a változás eseményt reprezentálja), megvizsgálja a checkbox állapotát (e.target.checked), és ez alapján váltja a témát.

function switchTheme(e) {
  if (e.target.checked) {
    document.documentElement.setAttribute("data-theme", "dark");
  } else {
    document.documentElement.setAttribute("data-theme", "light");
  }
}

A függvényeket úgy tudjuk meghívni, hogy a függvény nevét követően egy zárójel párt teszünk, jelen esetben switchTheme().

3. Eseményfigyelő

Az eseményfigyelők olyan függvények a JavaScript-ben, amelyek egy adott esemény bekövetkezését várják, majd végrehajtják a hozzájuk tartozó visszahívó függvényt, jelen esetben a switchTheme függvényt.

toggleSwitch.addEventListener("change", switchTheme);

Ez a sor egy eseményfigyelőt ad hozzá a checkbox elemhez. Figyeli a "change" eseményt, ami akkor történik meg, amikor a checkbox állapota megváltozik (például be vagy kikapcsolják). Amikor ez az esemény bekövetkezik, meghívja a switchTheme függvényt, ami kezeli a téma váltást.

Lokális tároló

A harmadik műveletünk a kiválasztott téma elmentése lesz a felhasználó böngészőjébe, és amikor az oldalunkra visszajön, akkor ugyan azt a témát lássa.

1. Téma váltó függvény módosítása

Ahhoz, hogy el tudjuk menteni a kiválasztott témát, azt akkor kell megtennünk, amikor rákattintunk a témaváltó gombra. Ezért a témaváltó függvény módosítanunk kell a következő képpen.

function switchTheme(e) {
  if (e.target.checked) {
    document.documentElement.setAttribute("data-theme", "dark");
    localStorage.setItem("theme", "dark");
  } else {
    document.documentElement.setAttribute("data-theme", "light");
    localStorage.setItem("theme", "light");
  }
}

2. Aktuális téma kiolvasása

A böngésző helyi tárolójából lekéri a jelenlegi téma preferenciát. Ha van téma preferencia, akkor azt a currentTheme változóban tárolja; egyébként a currentTheme értéke null.

const currentTheme = localStorage.getItem("theme")
  ? localStorage.getItem("theme")
  : null;

3. Téma alkalmazása

Ha van elmentve téma (currentTheme nem null), akkor beállítja a <html> elem data-theme attribútumát a tárolt téma szerint. Ezen felül, ha a tárolt téma "dark", akkor bejelöli a jelölőnégyzetet, hogy tükrözze a sötét téma állapotát.

if (currentTheme) {
  document.documentElement.setAttribute("data-theme", currentTheme);

  if (currentTheme === "dark") {
    toggleSwitch.checked = true;
  }
}

Extra olvasnivaló

Amennyiben szeretnél még olvasni a különböző kiválasztókról, akkor azt itt tudod megtenni. Ha a események érdekelnek, akkor itt tudsz róluk olvasni.

KAPCSOLÓDÓ CIKKEK