Tento článek byl původně napsán pro DigitalOcean .
DOM je často označován jako strom DOM a skládá se ze stromu objektů nazývaných uzly . V Úvodu do DOM jsme si prošli, co je to Document Object Model (DOM), jak přistupovat k document
objekt a upravovat jeho vlastnosti pomocí konzoly a rozdíl mezi zdrojovým kódem HTML a DOM.
V tomto tutoriálu si zopakujeme terminologii HTML, která je nezbytná pro práci s JavaScriptem a DOM, a naučíme se o stromu DOM, co jsou uzly a jak identifikovat nejběžnější typy uzlů. Nakonec se přesuneme za konzoli a vytvoříme program JavaScript pro interaktivní úpravu DOM.
Terminologie HTML
Pochopení terminologie HTML a JavaScriptu je nezbytné pro pochopení toho, jak pracovat s DOM. Pojďme si krátce zopakovat terminologii HTML.
Pro začátek se podívejme na tento HTML element.
<a href="index.html">Home</a>
Zde máme kotevní prvek, což je odkaz na index.html
.
a
je taghref
je atributindex.html
je hodnota atributuHome
je text .
Vše mezi úvodní a závěrečnou značkou dohromady tvoří celý prvek HTML .
Budeme pracovat s index.html
z předchozího tutoriálu:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Learning the DOM</title>
</head>
<body>
<h1>Document Object Model</h1>
</body>
</html>
Nejjednodušší způsob přístupu k prvku pomocí JavaScriptu je pomocí id
atribut. Pojďme přidat odkaz, který máme výše, do našeho index.html
soubor s id
z nav
.
<a id="nav" href="index.html">Home</a>
Načtěte nebo znovu načtěte stránku v okně prohlížeče a podívejte se na DOM, abyste se ujistili, že byl kód aktualizován.
Budeme používat getElementById()
způsob přístupu k celému prvku. V konzole zadejte následující:
document.getElementById('nav');
Konzole<a id="nav" href="index.html">Home</a>
Získali jsme celý prvek pomocí getElementById()
. Nyní místo psaní tohoto objektu a metody pokaždé, když chceme získat přístup k nav
odkaz, můžeme prvek umístit do proměnné, abychom s ním snáze pracovali.
let navLink = document.getElementById('nav');
navLink
proměnná obsahuje náš kotevní prvek. Odtud můžeme snadno upravovat atributy a hodnoty. Můžeme například změnit umístění odkazu změnou href
atribut:
navLink.href = 'https://www.wikipedia.org';
Můžeme také změnit obsah textu změnou přiřazení textContent
vlastnost:
navLink.textContent = 'Navigate to Wikipedia';
Nyní, když si prohlížíme náš prvek, buď v konzole, nebo zaškrtnutím Elements tag, můžeme vidět, jak byl prvek aktualizován.
navLink;
<a id="nav" href="https://www.wikipedia.org/">Navigate to Wikipedia</a>
To se také odráží na front-endu webu.
Obnovením stránky se vše vrátí zpět na původní hodnoty.
V tomto bodě byste měli pochopit, jak používat document
metoda přístupu k prvku, jak přiřadit prvek k proměnné a jak upravit vlastnosti a hodnoty v prvku.
Strom a uzly DOM
Všechny položky v DOM jsou definovány jako uzly . Existuje mnoho typů uzlů, ale jsou tři hlavní, se kterými pracujeme nejčastěji:
- Prvek uzly
- Text uzly
- Komentář uzly
Když je prvek HTML položkou v modelu DOM, označuje se jako uzel prvku . Jakýkoli osamocený text mimo prvek je textový uzel a komentář HTML je uzel komentáře . Kromě těchto tří typů uzlů je to document
sám o sobě je dokument uzel, který je kořenem všech ostatních uzlů.
DOM se skládá ze stromu struktura vnořených uzlů, která je často označována jako strom DOM . Možná znáte rodokmen předků, který se skládá z rodičů, dětí a sourozenců. Uzly v DOM se také označují jako rodiče, děti a sourozenci v závislosti na jejich vztahu k ostatním uzlům.
Pro demonstraci vytvořte nodes.html
soubor. Přidáme text, komentář a uzly prvků.
<!DOCTYPE html>
<html>
<head>
<title>Learning About Nodes</title>
</head>
<body>
<h1>An element node</h1>
<!-- a comment node -->
A text node.
</body>
</html>
html
element uzel je nadřazený uzel. head
a body
jsou sourozenci, děti html
. body
obsahuje tři podřízené uzly, což jsou všichni sourozenci – typ uzlu nemění úroveň, na které je vnořen.
Identifikace typu uzlu
Každý uzel v dokumentu má typ uzlu , ke kterému se přistupuje přes nodeType
vlastnictví. Mozilla Developer Network má aktuální seznam všech konstant typu uzlů. Níže je tabulka nejběžnějších typů uzlů, se kterými pracujeme v tomto tutoriálu.
Typ uzlu | Hodnota | Příklad |
---|---|---|
ELEMENT_NODE | 1 | <body> prvek |
TEXT_NODE | 3 | Text, který není součástí prvku |
COMMENT_NODE | 8 | <!-- an HTML comment --> |
V části Prvky na kartě Vývojářské nástroje si můžete všimnout, že kdykoli kliknete na libovolný řádek v DOM a zvýrazníte jej, hodnota == $0
se objeví vedle něj. Toto je velmi praktický způsob, jak získat přístup k aktuálně aktivnímu prvku v Nástrojích pro vývojáře zadáním $0
.
V konzole nodes.html , klikněte na první prvek v body
, což je h1
prvek.
V konzole získejte typ uzlu aktuálně vybraného uzlu s nodeType
vlastnost.
$0.nodeType;
Konzole1
Pomocí h1
vybraný prvek, uvidíte 1
jako výstup, který můžeme vidět, koreluje s ELEMENT_NODE
. Udělejte totéž pro text a komentář a vygenerují 3
a 8
respektive.
Když víte, jak přistupovat k prvku, můžete vidět typ uzlu, aniž byste prvek zvýraznili v DOM.
document.body.nodeType;
Konzole1
Kromě nodeType
, můžete také použít nodeValue
vlastnost k získání hodnoty textu nebo uzlu komentáře a nodeName
získat název tagu prvku.
Úprava modelu DOM pomocí událostí
Doposud jsme viděli, jak upravit DOM v konzole, což, jak jsme viděli, je dočasné; při každém obnovení stránky se změny ztratí. V úvodu do kurzu DOM jsme použili konzoli k aktualizaci barvy pozadí těla. Můžeme zkombinovat to, co jsme se naučili v tomto tutoriálu, a vytvořit interaktivní tlačítko, které to udělá po kliknutí.
Vraťme se k našemu index.html
a přidejte button
prvek s id
. Také přidáme odkaz na nový soubor v novém js
adresář js/scripts.js
.
<!DOCTYPE html>
<html>
<head>
<title>Learning the DOM</title>
</head>
<body>
<h1>Document Object Model</h1>
<button id="changeBackground">Change Background Color</button>
<script src="js/script.js"></script>
</body>
</html>
Událost v JavaScriptu je akce, kterou uživatel provedl. Když uživatel najede myší na prvek, klikne na prvek nebo stiskne určitou klávesu na klávesnici, jedná se o všechny typy událostí. V tomto konkrétním případě chceme, aby naše tlačítko poslouchalo a bylo připraveno provést akci, když na něj uživatel klikne. Toho lze dosáhnout přidáním posluchače událostí na naše tlačítko.
Vytvořte scripts.js
a uložte jej do nového js
adresář. V souboru nejprve najdeme button
element a přiřadit jej k proměnné.
let button = document.getElementById('changeBackground')
Pomocí addEventListener()
způsob, řekneme tlačítku, aby poslouchalo kliknutí a po kliknutí provedlo funkci.
button.addEventListener('click', () => {
// action will go here
})
Nakonec uvnitř funkce napíšeme stejný kód z předchozího tutoriálu, abychom změnili barvu pozadí na fuchsia
.
document.body.style.backgroundColor = 'fuchsia'
Zde je celý náš skript:
scripts.jslet button = document.getElementById('changeBackground')
button.addEventListener('click', () => {
document.body.style.backgroundColor = 'fuchsia'
})
Po uložení tohoto souboru obnovte index.html
v prohlížeči. Klikněte na tlačítko a událost se spustí.
Barva pozadí stránky se změnila na fuchsiovou kvůli události JavaScriptu.
Závěr
V tomto tutoriálu jsme si prošli terminologii, která nám umožní porozumět a upravit DOM. Zjistili jsme, jak je DOM strukturován jako strom uzlů, které budou obvykle tvořit prvky HTML, text nebo komentáře, a vytvořili jsme skript, který umožní uživateli upravit web, aniž by musel ručně zadávat kód do vývojářské konzole.