User Tools

Site Tools


tanszek:oktatas:web_technologia_alapjai:js_dom

This is an old revision of the document!


DOM manipuláció JavaScript segítségével

A Document Object Model (DOM) a weboldalak szerkezetét írja le egy hierarchikus fa formájában, amelyen keresztül a JavaScript hozzáférhet és módosíthatja az oldal tartalmát és szerkezetét. A DOM manipuláció az egyik legfontosabb eszköz a dinamikus weboldalak fejlesztésében, mivel lehetővé teszi az elemek hozzáadását, eltávolítását, módosítását, valamint az eseménykezelést.

Document Object Model

A DOM (Document Object Model) egy platformfüggetlen, objektumalapú reprezentációja egy HTML- vagy XML-dokumentumnak. A DOM egy fa struktúrában írja le az oldal elemeit, ahol minden HTML-címke egy csomópontként (node) jelenik meg, és hierarchikus kapcsolatban áll a többi elemmel. A DOM-on keresztül JavaScript segítségével elérhetjük és módosíthatjuk az oldal tartalmát és szerkezetét.

A DOM egy objektummodell, amelyben minden HTML-elem egy objektumként létezik. Például egy egyszerű HTML-oldal:

<html>
  <head>
    <title>My title</title>
  </head>
  <body>
    <h1>A heading</h1>
    <a href="#">Link text</a>
  </body>
</html>

A DOM ezt az oldalt a következő fastruktúraként kezeli:

A document objektum a teljes HTML-dokumentumot képviseli, és az egyik legfontosabb kiindulópont a DOM manipuláció során. Segítségével elérhetjük az oldal elemeit, új elemeket hozhatunk létre, módosíthatjuk a tartalmat, és kezelhetjük az eseményeket. A DOM többféle csomópontot tartalmaz, de a legfontosabbak a következők:

  • Node (csomópont): Minden, ami a DOM fában található, egy csomópont (node). A csomópontok különböző típusúak lehetnek, például elemek, attribútumok vagy szövegek.
  • Element (elem): Az element típusú csomópontok a tényleges HTML-elemeket képviselik (pl. div, p, h1 stb.).
    • Példa: <p>Ez egy bekezdés.</p>
  • Attribute (attribútum): Az attribute típusú csomópontok egy HTML-elem tulajdonságait tárolják (pl. id, class, src, href stb.).
    • Példa: <p id=“main-text”>Ez egy fontos bekezdés.</p>
  • Text (szöveg): A text típusú csomópontok a HTML-elemek belső szöveges tartalmát tárolják.
    • Példa: <p>Ez egy bekezdés.</p>

A DOM lehetővé teszi, hogy JavaScript segítségével:

  • Elemeket válasszunk ki és módosítsunk (pl. document.getElementById(), document.querySelector())
  • Új elemeket hozzunk létre és illesszünk be (pl. createElement(), appendChild())
  • Eseménykezelőket hozzunk létre (pl. addEventListener())
  • Stílusokat és attribútumokat módosítsunk (pl. element.style, setAttribute())

DOM manipulációs technikák

A DOM elérésére a globális document objektumon keresztül van lehetőség, melynek dokumentációja itt található meg: https://developer.mozilla.org/en-US/docs/Web/API/Document

A következő bekezdések a teljesség igénye nélkül mutatnak be néhány gyakran használt metódust.

Elemek kiválasztása

  • getElementById(id) – Visszaadja az első olyan elemet, amelynek id attribútuma megegyezik a megadott értékkel. Ha nincs ilyen elem, null értéket ad vissza.
  • getElementsByClassName(className) – Egy HTMLCollection-t ad vissza, amely tartalmazza az összes olyan elemet, amely rendelkezik a megadott osztálynévvel.
  • getElementsByTagName(tagName) – Egy HTMLCollection-t ad vissza, amely tartalmazza az összes megadott típusú HTML elemet.
  • querySelector(selector) – Az első olyan elemet adja vissza, amely illeszkedik a megadott CSS-szelektorhoz. Ha nincs találat, null-t ad vissza.
  • querySelectorAll(selector) – Egy NodeList-et ad vissza, amely tartalmazza az összes olyan elemet, amely megfelel a megadott CSS-szelektornak.

<!DOCTYPE html>
<html lang="hu">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>DOM - Elem kiválasztás</title>
</head>
<body>

    <h1 id="title">Főcím</h1>
    <p class="text">Ez egy bekezdés.</p>
    <p class="text">Ez egy másik bekezdés.</p>
    <div>
        <span>Span 1</span>
        <span>Span 2</span>
    </div>

    <script>
        // Egy adott ID-val rendelkező elem kiválasztása
        let titleElement = document.getElementById("title");
        console.log(titleElement.textContent); // Főcím

        // Osztály alapján több elem kiválasztása
        let textElements = document.getElementsByClassName("text");
        console.log(textElements[0].textContent); // Ez egy bekezdés.

        // Összes adott típusú elem kiválasztása
        let spans = document.getElementsByTagName("span");
        console.log(spans.length); // 2

        // Az első találat kiválasztása CSS-szelektorral
        let firstParagraph = document.querySelector(".text");
        console.log(firstParagraph.textContent); // Ez egy bekezdés.

        // Az összes találat kiválasztása CSS-szelektorral
        let allParagraphs = document.querySelectorAll(".text");
        allParagraphs.forEach(p => console.log(p.textContent));
        // Ez egy bekezdés.
        // Ez egy másik bekezdés.
    </script>
</body>
</html>

Tartalom módosítása

  • innerText, textContent
  • innerHTML

Attribútumok és stílus módosítása

  • setAttribute, getAttribute
  • classList.add, classList.remove, classList.toggle
  • element.style

Új elemek létrehozása és hozzáadása

  • createElement
  • appendChild, prepend
  • insertBefore

Eseménykezelés

  • addEventListener

Feladat

A feladat egy egyszerű, dinamikus teendő lista készítése.

  • Legyen egy <input> szöveges mező, ahova a felhasználó beírhat egy új teendőt.
  • Legyen egy „Hozzáadás” gomb, melynek lenyomásakor a beírt szöveg kerüljön fel egy <ul> listára.
  • A listán szereplő elemekre kattintva azok legyenek áthúzva (CSS: text-decoration: line-through).
  • Az oldal elemeinek formázásához használj CSS stílusokat!

Az elkészült megoldást töltsd fel a GitHub repository-dba!

tanszek/oktatas/web_technologia_alapjai/js_dom.1741628934.txt.gz · Last modified: 2025/03/10 17:48 by kissa