NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

19. diel - Editácia obsahu DOM v JavaScripte Nové

V minulej lekcii, Tvorba elementov a hierarchie DOM v JavaScripte, sme sa naučili vytvoriť nový element a vložiť ho do HTML stránky.

V dnešnom tutoriále základov JavaScriptu si ukážeme, ako pomocou vlastností innerText, textContent a innerHTML čítať a meniť obsah elementov v Document Object Model (DOM). Budeme pokračovať v projekte Domáceho pekárstva z minulej lekcie, najmä v editácii súboru dom.js.

Editácia obsahu DOM

Na čítanie a zmene obsahu elementov v DOM nám dobre poslúžia špeciálne vlastnosti, ktoré nám umožňujú čítať aj meniť obsah elementov na našich webových stránkach. Táto zručnosť je kľúčová pre dynamické zmeny webových stránok v reálnom čase.

Vlastnosti innerText a textContent

Vlastnosť innerText umožňuje získať alebo nastaviť textový obsah elementu, pričom neberie do úvahy všetky HTML značky vo vnútri elementu. Berie ale do úvahy štýlovanie a text vracia tak, ako je vykreslený na stránke. Teda ignoruje skryté elementy a zachováva vizuálne formátovanie (napríklad odriadkovanie). Zmeňme text na našej stránke:

let paragraph = document.querySelector("p");
paragraph.innerText = "Dnes máme v ponuke:";

Na stránke sa nám zobrazí upravený úvodný odsek:

Domácí pekařství
domaci_pekarstvi.cz

Vlastnosť textContent funguje podobne ako innerText. Hlavnou odlišnosťou je, že innerText rešpektuje štylizáciu CSS a vracia text tak, ako je vykreslený na stránke. To znamená, že skrytý text (napríklad pomocou atribútu display: none;) nebude zahrnutý v návratovej hodnote innerText. Na druhú stranu, textContent ignoruje štylovanie a vracia všetok text obsiahnutý v elemente, vrátane toho, ktorý je skrytý. Táto vlastnosť je rýchlejšia, pretože nepotrebuje zisťovať, aký text je viditeľný na základe aplikovaných štýlov.

V našej ukážke máme skrytý text v rámci druhého výskyty elementu <p>. Poďme si ho nechať pomocou oboch vlastností vypísať:

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

V konzole vidíme:

Výpis `innerText` a `textContent` v konzole - Základné konštrukcie jazyka JavaScript - Základné konštrukcie jazyka JavaScript

Vlastnosť innerHTML

Podobne ako innerText funguje aj vlastnosť innerHTML, ktorá reprezentuje HTML obsah elementu. V našom HTML dokumente máme ponúkané produkty ako položky zoznamu (<li>), vyberieme piatu položku a necháme ju vypísať do konzoly:

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

Na prácu s týmto elementom v JavaScripte naň najprv potrebujeme získať odkaz. Potom načítame jeho vlastnosť innerHTML a vypíšeme ju do konzoly:

Výpis vlastnosti innerHTML odseku v konzole - Základné konštrukcie jazyka JavaScript - Základné konštrukcie jazyka JavaScript

Obsah elementu môžeme úplne rovnako aj meniť, upravme predchádzajúci príklad a škrtnime z ponuky položku torty:

products[4].innerHTML = "<s>Torty</s>";

Vnútorné HTML tagy vlastnosti innerHTML sa spracujú. Na stránke sa nám v prvom odseku zmení text na:

Domácí pekařství
domaci_pekarstvi.cz

Teraz už vieme, ako čítať a meniť obsah elementov. Pozrieme sa teda na editáciu ich atribútov.

Editácia atribútov DOM

Pri práci s DOM je kľúčové vedieť pracovať s atribútmi a potomkami jednotlivých elementov.

hasAttribute()

Základnou otázkou je, či element hľadaný atribút vôbec má. To zistíme metódou hasAttribute(), ktorá ako parameter berie názov atribútu a vracia true alebo false.

Takto napríklad zistíme, či pri h1 máme atribúty id, class a title:

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

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

Existuje aj metóda hasAttributes() v množnom čísle, ktorá vracia, či má element vôbec nejaký atribút. Ak nemá žiadny, vráti false, ak má aspoň jeden, vráti true. Táto metóda neberie žiadny parameter.

setAttribute()

V prípade, že chceme do elementu pridať atribút, zavoláme na ňom metódu setAttribute(). V jej parametri zadáme jeho názov a hodnotu. Všeobecná syntax je:

element.setAttribute(attributeName, value);

Pokiaľ chceme nastaviť atribút class a title, postupujeme nasledovne:

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

Overíme si, že nové atribúty boli pridané:

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

Pozrime sa na výstup konzoly:

Výpis true v konzole - Základné konštrukcie jazyka JavaScript - Základné konštrukcie jazyka JavaScript

Na záver ešte budeme chcieť zvýrazniť ponuku čerstvého chleba:

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

Ten si teda pomocou selektora získame a nastavíme mu triedu important. Teraz sa pozrieme na výsledok v prehliadači:

Domácí pekařství
domaci_pekarstvi.cz

V ďalšej lekcii, Dokončenie editora tabuliek v JavaScripte, sa naučíme do editora tabuliek vkladať nové stĺpce a riadky. Doplníme do neho aj funkcie na ich zmazanie.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 0x (4.12 kB)
Aplikácia je vrátane zdrojových kódov v jazyku JavaScript

 

Predchádzajúci článok
Tvorba elementov a hierarchie DOM v JavaScripte
Všetky články v sekcii
Základné konštrukcie jazyka JavaScript
Preskočiť článok
(neodporúčame)
Dokončenie editora tabuliek v JavaScripte
Článok pre vás napísal Martin Uhlíř
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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