NOVINKA: Začni v IT jako webmaster s komplexním akreditovaným online kurzem Tvůrce WWW stránek. Zjisti více:
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Lekce 19 - Editace obsahu DOM v JavaScriptu Nové

V minulé lekci, Výběr elementů pomocí DOM v JavaScriptu, jsme se naučili další výběr elementů v DOM.

V dnešním tutoriálu základů JavaScriptu si ukážeme, jak pomocí vlastností innerText, textContent a innerHTML číst a měnit obsah elementů v Document Object Model (DOM). Budeme pokračovat v projektu Domácího pekařství z minulé lekce, zejména v editaci souboru dom.js.

Editace obsahu DOM

Ke čtení a změně obsahu elementů v DOM nám dobře poslouží speciální vlastnosti, které nám umožňují číst i měnit obsah elementů na našich webových stránkách. Tato dovednost je klíčová pro dynamické změny webových stránek v reálném čase.

Vlastnosti innerText a textContent

Vlastnost innerText umožňuje získat nebo nastavit textový obsah elementu, přičemž nebere v potaz všechny HTML značky uvnitř elementu. Bere ale v úvahu stylování a text vrací tak, jak je vykreslen na stránce. Tedy ignoruje skryté elementy a zachovává vizuální formátování (například odřádkování). Změňme text na naší stránce:

let odstavec = document.querySelector("p");
odstavec.innerText = "Dnes máme v nabídce:";

Na stránce se nám zobrazí upravený úvodní odstavec:

Domácí pekařství
domaci_pekarstvi.cz

Vlastnost textContent funguje podobně jako innerText. Jak jsme si už řekli, innerText respektuje stylizaci CSS a vrací text tak, jak je vykreslený na stránce. To znamená, že skrytý text (například pomocí atributu display: none;) nebude zahrnut v návratové hodnotě innerText. Na druhou stranu, textContent ignoruje stylování a vrací veškerý text obsažený v elementu, včetně toho, který je skrytý. Tato vlastnost je rychlejší, protože nepotřebuje zjišťovat, jaký text je viditelný na základě aplikovaných stylů.

V naší ukázce máme skrytý text v rámci druhého výskyty elementu <p>. Pojďme si jej nechat pomocí obou vlastností vypsat:

let skrytyText = document.querySelectorAll("p");
console.log(skrytyText[1].innerText);
console.log(skrytyText[1].textContent);

V konzoli vidíme:

Výpis `innerText` a `textContent` v konzoli - Základní konstrukce jazyka JavaScript

Vlastnost innerHTML

Podobně jako innerText funguje i vlastnost innerHTML, která reprezentuje HTML obsah elementu. V našem HTML dokumentu máme nabízené produkty jako položky seznamu (<li>), vybereme pátou položku a necháme ji vypsat do konzole:

let produkty = document.querySelectorAll("li");
let pataPolozka = produkty[4];
console.log(pataPolozka.innerHTML);

Pro práci s tímto elementem v JavaScriptu na něj nejprve potřebujeme získat odkaz. Poté načteme jeho vlastnost innerHTML a vypíšeme ji do konzole:

Výpis vlastnosti innerHTML odstavce v konzoli - Základní konstrukce jazyka JavaScript

Obsah elementu můžeme úplně stejně i měnit, upravme předchozí příklad a škrtněme z nabídky položku dorty:

produkty[4].innerHTML = "<s>Dorty</s>";

Vnitřní HTML tagy vlastnosti innerHTML se zpracují. Na stránce se nám v prvním odstavci změní text na:

Domácí pekařství
domaci_pekarstvi.cz

Nyní již víme, jak číst a měnit obsah elementů. Podíváme se tedy na editaci jejich atributů.

Editace atributů DOM

Při práci s DOM je klíčové umět pracovat s atributy a potomky jednotlivých elementů.

Metoda hasAttribute()

Základní otázkou je, zda element hledaný atribut vůbec má. To zjistíme metodou hasAttribute(), která jako parametr bere název atributu a vrací true nebo false.

Takto například zjistíme, zda u h1 máme atributy id, class a title:

const titulek = document.getElementById("greeting");

console.log("h1 má id atribut:", titulek.hasAttribute("id")); // Vrátí true
console.log("h1 má class atribut:", titulek.hasAttribute("class")); // Vrátí false
console.log("h1 má title atribut:", titulek.hasAttribute("title")); // Vrátí false

Existuje i metoda hasAttributes() v množném čísle, která vrací, jestli má element vůbec nějaký atribut. Pokud nemá žádný, vrátí false, pokud má alespoň jeden, vrátí true. Tato metoda nebere žádný parametr.

Metoda setAttribute()

V případě, že chceme do elementu přidat atribut, zavoláme na něm metodu setAttribute(). V jejím parametru zadáme jeho název a hodnotu. Obecná syntaxe je:

element.setAttribute(attributeName, value);

Pokud chceme nastavit atribut class a title, postupujeme následovně:

titulek.setAttribute("class", "highlight");
titulek.setAttribute("title", "Vítejte v našem pekařství");

Ověříme si, že nové atributy byly přidány:

console.log("h1 má nyní class atribut:", titulek.hasAttribute("class")); // Vrátí true
console.log("h1 má nyní title atribut:", titulek.hasAttribute("title")); // Vrátí true

Podívejme se na výstup konzole:

Výpis true v konzoli - Základní konstrukce jazyka JavaScript

Na závěr ještě budeme chtít zvýraznit nabídku čerstvého chleba:

let prvniPolozkaSeznamu = document.querySelector("li");
prvniPolozkaSeznamu.setAttribute("class", "important");

Ten si tedy pomocí selektoru získáme a nastavíme mu třídu important. Nyní se podíváme na výsledek v prohlížeči:

Domácí pekařství
domaci_pekarstvi.cz

V příští lekci, Tvorba elementů a hierarchie DOM v JavaScriptu, si popíšeme hierarchii elementů a naučíme se vytvořit nový element a přidat jej do HTML stránky.


 

Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 0x (4.12 kB)
Aplikace je včetně zdrojových kódů v jazyce JavaScript

 

Předchozí článek
Výběr elementů pomocí DOM v JavaScriptu
Všechny články v sekci
Základní konstrukce jazyka JavaScript
Přeskočit článek
(nedoporučujeme)
Tvorba elementů a hierarchie DOM v JavaScriptu
Článek pro vás napsal Martin Uhlíř
Avatar
Uživatelské hodnocení:
3 hlasů
Jsem lektorem v ITnetwork. Školím celou plejádu kurzů. Podporuji studenty k tomu, aby se nebáli ptát se a experimentovat. Mým sloganem je "dobrá chyba", tedy když student/ka udělá chybu, která ho/jí posune dál.
Aktivity