tanszek:oktatas:web_technologia_alapjai:js_dom
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:web_technologia_alapjai:js_dom [2025/03/10 12:46] – kissa | tanszek:oktatas:web_technologia_alapjai:js_dom [2025/03/12 12:54] (current) – [Elemek kiválasztása] kissa | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== DOM manipuláció JavaScript segítségével ===== | + | ====== 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, | ||
| - | {{: | + | ===== Document Object Model ===== |
| + | A **DOM (Document Object Model)** egy platformfüggetlen, | ||
| + | |||
| + | A DOM egy objektummodell, | ||
| - | <code html> | + | <sxh html> |
| < | < | ||
| < | < | ||
| Line 10: | Line 14: | ||
| < | < | ||
| <h1>A heading</ | <h1>A heading</ | ||
| - | <a href="#> | + | <a href="# |
| </ | </ | ||
| </ | </ | ||
| - | </code> | + | </sxh> |
| - | 1. Bevezetés (5 perc) | + | A DOM ezt az oldalt |
| - | Mi a DOM (Document Object Model)? | + | |
| - | Miért fontos | + | |
| - | Alapfogalmak: | + | |
| - | document objektum | + | |
| - | DOM-fák | + | |
| - | Elemtípusok (node, element, attribute, text) | + | |
| - | 2. Alapvető DOM manipulációs technikák bemutatása (25 perc) | + | {{: |
| - | Elemek kiválasztása | + | |
| - | getElementById | + | A '' |
| - | getElementsByClassName | + | * **Node** (csomópont): |
| - | getElementsByTagName | + | * **Element** (elem): Az element típusú csomópontok a tényleges HTML-elemeket képviselik (pl. '' |
| - | querySelector | + | * Példa: **< |
| - | querySelectorAll | + | * **Attribute** (attribútum): |
| - | Tartalom módosítása | + | * Példa: <p **id=" |
| + | * **Text** (szöveg): A text típusú csomópontok a HTML-elemek belső szöveges tartalmát tárolják. | ||
| + | * Példa: < | ||
| - | innerText, textContent | + | A DOM lehetővé teszi, hogy JavaScript segítségével: |
| - | innerHTML | + | * Elemeket válasszunk ki és módosítsunk (pl. '' |
| - | Attribútumok módosítása | + | * Új elemeket hozzunk létre és illesszünk be (pl. '' |
| + | * Eseménykezelőket hozzunk létre (pl. '' | ||
| + | * Stílusokat és attribútumokat módosítsunk (pl. '' | ||
| - | setAttribute, | + | ===== DOM manipulációs technikák ===== |
| - | classList.add, | + | |
| - | Új elemek létrehozása és hozzáadása | + | |
| - | createElement | + | A DOM elérésére a globális '' |
| - | appendChild, prepend | + | |
| - | insertBefore | + | |
| - | Eseménykezelés | + | |
| - | addEventListener | + | A következő bekezdések a teljesség igénye nélkül mutatnak be néhány gyakran használt metódust. |
| - | Példa: gombra kattintáskor szöveg megváltoztatása | + | |
| - | Stílus módosítása JavaScriptből | + | |
| - | element.style.property | + | ==== Elemek kiválasztása ==== |
| - | Dinamikus osztályváltás classList-tel | + | A DOM-ban található csomópontok elérését a következő függvények biztosítják: |
| - | 3. Példa | + | * '' |
| - | Én mutatok egy példát, amely jól illusztrálja | + | * '' |
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| - | Bemutatott feladat: Egyszerű interaktív lista | + | <sxh html> |
| - | 👉 Feladat: | + | < |
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | <meta name=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <h1 id=" | ||
| + | <p class=" | ||
| + | <p class=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | // Egy adott ID-val rendelkező elem kiválasztása | ||
| + | let titleElement = document.getElementById(" | ||
| + | console.log(titleElement.textContent); | ||
| + | |||
| + | // Osztály alapján több elem kiválasztása | ||
| + | let textElements = document.getElementsByClassName(" | ||
| + | console.log(textElements[0].textContent); | ||
| + | |||
| + | // Összes adott típusú elem kiválasztása | ||
| + | let spans = document.getElementsByTagName(" | ||
| + | console.log(spans.length); | ||
| + | |||
| + | // Az első találat kiválasztása CSS-szelektorral | ||
| + | let firstParagraph = document.querySelector(" | ||
| + | console.log(firstParagraph.textContent); | ||
| + | |||
| + | // Az összes találat kiválasztása CSS-szelektorral | ||
| + | let allParagraphs = document.querySelectorAll(" | ||
| + | allParagraphs.forEach(p => console.log(p.textContent)); | ||
| + | // Ez egy bekezdés. | ||
| + | // Ez egy másik bekezdés. | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Tartalom módosítása ==== | ||
| + | A DOM-ban található csomópontok tartalmát a következő tulajdonságok segítségével lehet elérni, illetve módosítani: | ||
| - | Van egy <ul> lista pár kezdeti elemmel. | + | * '' |
| - | Egy < | + | * '' |
| - | Ha egy listaelemre kattintanak, az pirosra változik. | + | |
| - | <code html> | + | <sxh html> |
| < | < | ||
| <html lang=" | <html lang=" | ||
| Line 69: | Line 110: | ||
| <meta charset=" | <meta charset=" | ||
| <meta name=" | <meta name=" | ||
| - | < | + | < |
| < | < | ||
| - | .highlight | + | .hidden |
| + | display: none; | ||
| + | | ||
| </ | </ | ||
| </ | </ | ||
| < | < | ||
| - | <ul id="myList"> | + | <h1 id="title">Eredeti |
| - | | + | <p id=" |
| - | <li>Második elem</li> | + | <p id="hiddenText" |
| - | | + | |
| - | <button | + | |
| < | < | ||
| - | document.getElementById(' | + | |
| - | let newItem | + | let title = document.getElementById(" |
| - | | + | console.log(title.innerText); // Eredeti |
| - | | + | |
| + | |||
| + | // textContent: | ||
| + | | ||
| + | | ||
| + | |||
| + | // innerHTML: a HTML tartalmat is kezeli | ||
| + | let paragraph | ||
| + | | ||
| + | paragraph.innerHTML = "Ez egy < | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Eseménykezelés ==== | ||
| + | A DOM-ban található csomópontok eseményeinek (pl. kattintás, dupla kattintás, szövegmező fókuszba kerülése, drag& | ||
| + | |||
| + | * '' | ||
| + | |||
| + | <sxh html> | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | <meta name=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <input type=" | ||
| + | <button id=" | ||
| + | |||
| + | < | ||
| + | // Szövegmező fókusz eseménykezelője | ||
| + | document.getElementById(" | ||
| + | this.style.borderColor = " | ||
| }); | }); | ||
| - | document.getElementById(' | + | |
| - | | + | |
| - | event.target.classList.toggle(' | + | |
| - | | + | |
| }); | }); | ||
| </ | </ | ||
| </ | </ | ||
| </ | </ | ||
| - | </code> | + | </sxh> |
| + | |||
| + | ==== Attribútumok és stílus módosítása ==== | ||
| + | A DOM csomópontjainak attribútumait és stílusát a következő függvényekkel lehet elérni és módosítani: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | <sxh html> | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | <meta name=" | ||
| + | < | ||
| + | < | ||
| + | .highlight { | ||
| + | background-color: | ||
| + | font-weight: | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | <button id=" | ||
| + | <p id=" | ||
| + | |||
| + | < | ||
| + | let button = document.getElementById(" | ||
| + | let paragraph = document.getElementById(" | ||
| + | |||
| + | // setAttribute és getAttribute használata | ||
| + | button.setAttribute(" | ||
| + | console.log(button.getAttribute(" | ||
| + | |||
| + | // classList használata | ||
| + | |||
| + | paragraph.classList.add(" | ||
| + | setTimeout(() => { | ||
| + | paragraph.classList.remove(" | ||
| + | }, 2000); | ||
| + | |||
| + | button.addEventListener(" | ||
| + | paragraph.classList.toggle(" | ||
| + | }); | ||
| + | |||
| + | // style attribútum használata | ||
| + | paragraph.style.color = " | ||
| + | paragraph.style.fontSize = " | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Új elemek létrehozása és hozzáadása ==== | ||
| + | A következő metódusokkal új csomópontokat hozhatunk létre, és adhatunk hozzá a DOM-hoz: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | <sxh html> | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | <meta name=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <div id=" | ||
| + | <p>Ez az eredeti bekezdés.</ | ||
| + | </ | ||
| + | |||
| + | <button id=" | ||
| + | |||
| + | < | ||
| + | let container = document.getElementById(" | ||
| + | let button = document.getElementById(" | ||
| + | |||
| + | button.addEventListener(" | ||
| + | // createElement használata | ||
| + | let newParagraph = document.createElement(" | ||
| + | newParagraph.textContent = "Ez egy új bekezdés."; | ||
| + | |||
| + | // appendChild használata (hozzáadja a végére) | ||
| + | container.appendChild(newParagraph); | ||
| + | |||
| + | // prepend használata (hozzáadja az elejére) | ||
| + | let firstParagraph = document.createElement(" | ||
| + | firstParagraph.textContent = "Ez egy bekezdés az elején."; | ||
| + | container.prepend(firstParagraph); | ||
| + | |||
| + | // insertBefore használata (új elem beszúrása egy másik elé) | ||
| + | let middleParagraph = document.createElement(" | ||
| + | middleParagraph.textContent = "Ez egy köztes bekezdés."; | ||
| + | |||
| + | let referenceNode = container.children[1]; | ||
| + | container.insertBefore(middleParagraph, | ||
| + | }); | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </sxh> | ||
| - | ==== Feladat ==== | + | ===== Feladat |
| A feladat egy egyszerű, dinamikus teendő lista készítése. | A feladat egy egyszerű, dinamikus teendő lista készítése. | ||
| Line 105: | Line 285: | ||
| * Legyen egy „Hozzáadás” gomb, melynek lenyomásakor a beírt szöveg kerüljön fel egy ''< | * Legyen egy „Hozzáadás” gomb, melynek lenyomásakor a beírt szöveg kerüljön fel egy ''< | ||
| * A listán szereplő elemekre kattintva azok legyenek áthúzva (CSS: '' | * A listán szereplő elemekre kattintva azok legyenek áthúzva (CSS: '' | ||
| - | * Legyen egy „Törlés” gomb minden elem mellett, amely törli az adott teendőt listából. | ||
| * Az oldal elemeinek formázásához használj CSS stílusokat! | * 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! | Az elkészült megoldást töltsd fel a GitHub repository-dba! | ||
tanszek/oktatas/web_technologia_alapjai/js_dom.1741610762.txt.gz · Last modified: 2025/03/10 12:46 by kissa
