NOVINKA: Kurz kybernetické bezpečnosti s akreditací MŠMT, nyní již od 0 Kč. Staň se žádaným profesionálem. Zjisti více:
NOVINKA: Staň se datovým analytikem a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Lekce 19 - Editace obsahu DOM v JavaScriptu

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:

const 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:

const 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:

const produkty = document.querySelectorAll("li");
const 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:

const 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

Shrnutí lekce

Pomocí vlastností innerText, textContent a innerHTML čteme nebo měníme obsah elementů v DOM. innerText pracuje jen s viditelným textem, zatímco textContent vrací i skrytý text. innerHTML umí pracovat i s HTML značkami, takže můžeme do elementu vložit například přeškrtnutý text. Metodou hasAttribute() ověříme, zda element obsahuje zadaný atribut. Metodou setAttribute() potom můžeme vybranému elementu nastavit nebo změnit atribut, například mu přidat CSS třídu nebo titulek, který se zobrazí po najetí myší.

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 39x (4.64 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í:
97 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