Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

15. diel - Základy práce s DOM a udalosti v JavaScriptu

V predchádzajúcom cvičení, Riešené úlohy k 12.-14. lekciu JavaScriptu, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V dnešnom tutoriále základov JavaScriptu si vysvetlíme, čo je to DOM a ako z neho načítať elementy z webovej stránky. Až doteraz sme sa totiž úspešne vyhýbali hlavnému využitiu JavaScriptu, ktorým je manipulácia s obsahom webovej stránky. Tá zahŕňa čítanie a zmenu obsahu stránky v reakcii na nejaké akcie od používateľa (napríklad stlačenie tlačidla vypočíta príklad, zobrazí alebo skryje určitú časť webu a podobne). Miesto o webových stránkach potom hovoríme o webovej aplikácii.

Na udalosti reagujeme pomocou funkcií, ktoré už ovládame. Dnes si v tutoriále ukážeme, ako sa takéto webové aplikácie robia. Naprogramujeme si veľmi jednoduchú webovú kalkulačku v JavaScripte, ktorá po kliknutí na tlačidlo sčíta zadané čísla:

Simple web calculator
localhost

Document Object Model

DOM je skratka pre Document Object Model. Ide o strom elementov (objektov), z ktorých je HTML stránka zložená. Objekty v DOM môžeme pomocou JavaScriptu meniť a tým samozrejme meníme výslednú podobu webovej stránky. Predstavme si nejaký jednoduchý HTML dokument:

<!DOCTYPE html>
<html>
<head>
    <title>Your page</title>
    <meta charset="utf-8" />
</head>
<body>
    <nav>
        <img src="logo.png" alt="logo" />
        <ul>
            <li>References</li>
            <li>Photogallery</li>
        </ul>
    </nav>
    <main>
        <article>
            <p>Hello</p>
            <p>Huge</p>
            <p>World</p>
        </article>
    </main>
</body>
</html>

JavaScript tento dokument vidí ako strom objektov. Značne zjednodušene by sme si DOM pre dokument vyššie mohli predstaviť nasledovne:

DOM v JavaScripte - Základné konštrukcie jazyka JavaScript

Na obrázku chýbajú nejaké uzly (celý element <head>), chýbajú tam aj tzv. textové uzly, čo je samotný text elementu. Napriek tomu vidíme, ako JavaScript stránku vníma. Po strome sa môžeme pohybovať a do jeho vetiev pridávať nové elementy, meniť ich obsah alebo ich mazať. V našej kalkulačke budeme zatiaľ z DOM vyberať prvky iba podľa ich id. Kedykoľvek chceme pracovať v JavaScripte s DOM, odkazujeme sa na objekt document, ktorý má na to určené metódy.

Tvorba jednoduchej webovej kalkulačky

Poďme si teraz krok po kroku pripraviť našu kalkulačku.

Príprava HTML stránky

Najprv si vytvorme naozaj jednoduchú webovú stránku, ktorá bude obsahovať:

  • dva elementy typu <input> na zadanie čísel,
  • jedno tlačidlo <button> na vykonanie výpočtu.

Kalkulačka bude vedieť čísla len sčítať, ale to nás zatiaľ nebude trápiť:

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <title>Simple web calculator</title>
    </head>

    <body>
        <h1>Simple web calculator</h1>
        <input type="text" id="number1" size="5" /> + <input type="text" id="number2" size="5" />
        <button id="button">Add!</button>
        <script type="text/javascript">
            // This is where we will write our code
        </script>
    </body>

</html>

Všimnite si, že všetky prvky, s ktorými chceme z JavaScriptu pracovať, sú opatrené atribútmi id.

Výsledná stránka vyzerá takto:

Simple web calculator
localhost

Všimnime si, že je náš skript vložený až na konci <body>. Keby sme ho totiž vložili pred elementy <input> a <button>, spustil by sa vo chvíli, keď vo stránke formulárové prvky ešte nie sú a nemohol by ich používať.

Výber elementu na základe id

Najprv si elementy na stránke vyberieme podľa ich id pomocou metódy getElementById(). Tá berie ako parameter textový reťazec s názvom id vyberaného elementu. Naša kalkulačka bude pracovať s vytvoreným tlačidlom a dvoma vstupmi pre čísla, preto si všetky tieto elementy načítame do premenných:

let elementButton = document.getElementById("button");
let elementNumber1 = document.getElementById("number1");
let elementNumber2 = document.getElementById("number2");

Funkcia add()

Každý element má nejaké vlastnosti. Element <input> má napríklad vlastnosť value, v ktorej je uložená hodnota, ktorú do daného poľa používateľ zadal. Vytvorme si funkciu add(), ktorá si pomocou vyššie vytvorených premenných získa obsah elementov <input>, sčíta ich ako dve čísla a výsledok zobrazí funkciou alert() vo vyskakovacom okne:

function add() {
    let number1 = parseFloat(elementNumber1.value);
    let number2 = parseFloat(elementNumber2.value);

    alert(number1 + number2);
}

Vo funkcii add() sme použili aj funkciu parseFloat(), ktorá prevádza textové reťazce na desatinné čísla. Vďaka tomu vráti naša kalkulačka správny výsledok. Bez funkcie parseFloat() by sme ako súčet reťazcov 10 a 20 získali výsledok 1020.

Udalosti

Kedykoľvek sa v našej aplikácii niečo stane (používateľ niečo niekam zadá, niekam klikne, dôjde k chybe a podobne...), JavaScript začne spúšťať tzv. obsluhy udalostí. Udalosti nájdeme ako vlastnosti na jednotlivých elementoch z DOM. Často začínajú na on, napríklad onclick je udalosť kliknutia. Práve tú si vyberieme na našom tlačidle a uložíme do nej našu funkciu add().

Vlastností je samozrejme viac, možno obsluhovať napríklad pohyb myši na tlačidle a ďalšie veci, ktoré si ukážeme neskôr. Nastavením udalosti onclick v našej kalkulačke zabezpečíme, že sa funkcia zavolá vždy, keď sa na tlačidlo klikne:

elementButton.onclick = add;

Všimnime si, že keď niekam funkciu ukladáme, neuvádzame zátvorky.

Naša aplikácia je teraz funkčná a môžeme si ju vyskúšať:

Simple web calculator
localhost

V budúcej lekcii, Spracovanie udalostí DOM pomocou poslucháčov v JavaScripte, vylepšíme našu webovú kalkulačku. Rozdelíme jej HTML a JavaScript kód do samostatných súborov a naučíme sa spracovávať udalosti DOM pomocou poslucháčov.


 

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é 10x (885 B)
Aplikácia je vrátane zdrojových kódov v jazyku JavaScript

 

Predchádzajúci článok
Riešené úlohy k 12.-14. lekciu JavaScriptu
Všetky články v sekcii
Základné konštrukcie jazyka JavaScript
Preskočiť článok
(neodporúčame)
Spracovanie udalostí DOM pomocou poslucháčov v JavaScripte
Článok pre vás napísal Michal Žůrek - misaz
Avatar
Užívateľské hodnotenie:
12 hlasov
Autor se věnuje tvorbě aplikací pro počítače, mobilní telefony, mikroprocesory a tvorbě webových stránek a webových aplikací. Nejraději programuje ve Visual Basicu a TypeScript. Ovládá HTML, CSS, JavaScript, TypeScript, C# a Visual Basic.
Aktivity