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 13:04] – 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, | A Document Object Model (DOM) a weboldalak szerkezetét írja le egy hierarchikus fa formájában, | ||
- | ==== Document Object Model ==== | + | ===== Document Object Model ===== |
A **DOM (Document Object Model)** egy platformfüggetlen, | A **DOM (Document Object Model)** egy platformfüggetlen, | ||
A DOM egy objektummodell, | A DOM egy objektummodell, | ||
- | <code html> | + | <sxh html> |
< | < | ||
< | < | ||
Line 14: | Line 14: | ||
< | < | ||
<h1>A heading</ | <h1>A heading</ | ||
- | <a href="#> | + | <a href="# |
</ | </ | ||
</ | </ | ||
- | </code> | + | </sxh> |
A DOM ezt az oldalt a következő fastruktúraként kezeli: | A DOM ezt az oldalt a következő fastruktúraként kezeli: | ||
Line 38: | Line 38: | ||
* Stílusokat és attribútumokat módosítsunk (pl. '' | * Stílusokat és attribútumokat módosítsunk (pl. '' | ||
+ | ===== DOM manipulációs technikák ===== | ||
- | 2. Alapvető | + | A DOM elérésére a globális '' |
- | Elemek kiválasztása | + | |
- | getElementById | + | A következő bekezdések a teljesség igénye nélkül mutatnak be néhány gyakran használt metódust. |
- | getElementsByClassName | + | |
- | getElementsByTagName | + | |
- | querySelector | + | |
- | querySelectorAll | + | |
- | Tartalom módosítása | + | |
- | innerText, textContent | + | ==== Elemek kiválasztása ==== |
- | innerHTML | + | A DOM-ban található csomópontok elérését a következő függvények biztosítják: |
- | Attribútumok módosítása | + | |
- | setAttribute, getAttribute | + | * '' |
- | classList.add, classList.remove, classList.toggle | + | * '' |
- | Új elemek létrehozása és hozzáadása | + | * '' |
+ | * '' | ||
+ | * '' | ||
- | createElement | + | <sxh html> |
- | appendChild, prepend | + | < |
- | insertBefore | + | <html lang=" |
- | Eseménykezelés | + | < |
+ | <meta charset=" | ||
+ | <meta name=" | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | <h1 id=" | ||
+ | <p class=" | ||
+ | <p class=" | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
- | addEventListener | + | < |
- | Példa: gombra kattintáskor szöveg megváltoztatása | + | // Egy adott ID-val rendelkező elem kiválasztása |
- | Stílus módosítása JavaScriptből | + | let titleElement = document.getElementById(" |
+ | | ||
- | element.style.property | + | // Osztály alapján több elem kiválasztása |
- | Dinamikus osztályváltás classList-tel | + | let textElements = document.getElementsByClassName(" |
+ | | ||
- | 3. Példa | + | // Összes adott típusú elem kiválasztása |
- | Én mutatok egy példát, amely jól illusztrálja az eddig tanultakat. | + | let spans = document.getElementsByTagName(" |
+ | | ||
- | Bemutatott feladat: Egyszerű interaktív lista | + | // Az első találat kiválasztása CSS-szelektorral |
- | 👉 Feladat: | + | let firstParagraph = document.querySelector(" |
+ | console.log(firstParagraph.textContent); | ||
- | Van egy <ul> lista pár kezdeti elemmel. | + | // Az összes találat kiválasztása CSS-szelektorral |
- | Egy <button> megnyomására | + | let allParagraphs = document.querySelectorAll(" |
- | Ha egy listaelemre kattintanak, | + | |
+ | // Ez egy bekezdés. | ||
+ | // Ez egy másik bekezdés. | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
- | <code html> | + | |
+ | ==== 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: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | <sxh html> | ||
< | < | ||
<html lang=" | <html lang=" | ||
Line 85: | 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 121: | 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.1741611855.txt.gz · Last modified: 2025/03/10 13:04 by kissa