Samouczek JS

JS DOM Wprowadzenie do JS JS Dokąd Wyjście JS Oświadczenia JS Składnia JS Komentarze JS Zmienne JS JS Let JS Const Operatorzy JS Arytmetyka JS Zadanie JS Typy danych JS Funkcje JS Obiekty JS Wydarzenia JS JS Strings Metody ciągów JS Wyszukiwanie ciągów JS Szablony JS String Numery JS Metody liczbowe JS Tablice JS Metody tablic JS Sortowanie tablic JS Iteracja tablicy JS JS Array Const JS Daty Formaty daty JS JS Data Pobierz metody Metody ustawiania daty JS Matematyka JS JS losowo JS Booleans Porównania JS Warunki JS Przełącznik JS Pętla JS dla Pętla JS dla In Pętla JS dla Of Pętla JS, podczas gdy Przerwa JS Iterable JS Zestawy JS Mapy JS Typ JS Konwersja typu JS JS Bitwise JS RegExp Błędy JS Zakres JS JS Podnoszenie Tryb ścisły JS JS to słowo kluczowe Funkcja strzałki JS Klasy JS JS JSON Debugowanie JS Przewodnik po stylu JS Najlepsze praktyki JS Błędy JS Wydajność JS JS słowa zastrzeżone

Wersje JS

Wersje JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Krawędź Historia JS

Obiekty JS

Definicje obiektów Właściwości obiektu Metody obiektowe Wyświetlanie obiektów Akcesoria do obiektów Konstruktorzy obiektów Prototypy obiektów Iterowalne obiekty Zestawy obiektów Mapy obiektów Odniesienie do obiektu

Funkcje JS

Definicje funkcji Parametry funkcji Wywołanie funkcji Wywołanie funkcji Funkcja Zastosuj Zamknięcia funkcji

Klasy JS

Wprowadzenie do zajęć Dziedziczenie klas Klasa statyczna

JS Async

Oddzwaniania JS Asynchroniczny JS JS Obietnice JS Async/Oczekiwanie

JS HTML DOM

Wprowadzenie do DOM Metody DOM Dokument DOM Elementy DOM DOM HTML Formularze DOM DOM CSS Animacje DOM Wydarzenia DOM Odbiornik zdarzeń DOM Nawigacja DOM Węzły DOM Kolekcje DOM Listy węzłów DOM

Zestawienie komponentów przeglądarki JS

Okno JS Ekran JS Lokalizacja JS Historia JS JS Navigator Wyskakujący alert JS Czas JS Pliki cookie JS

JS Web API

Wprowadzenie do internetowego interfejsu API Interfejs API formularzy internetowych Interfejs API historii online API przechowywania danych w sieci Web Web Worker API Internetowy interfejs API pobierania Internetowy interfejs API geolokalizacji

JS AJAX

Wprowadzenie do AJAX AJAX XMLHttp Żądanie AJAX Odpowiedź AJAX Plik XML AJAX AJAX PHP ASP AJAX Baza danych AJAX Aplikacje AJAX Przykłady AJAX

JS JSON

Wprowadzenie do JSON Składnia JSON JSON a XML Typy danych JSON Analiza JSON JSON Obiekty JSON Tablice JSON Serwer JSON JSON PHP JSON HTML JSON JSONP

JS kontra jQuery

Selektory jQuery jQuery HTML jQuery CSS jQuery DOM

Grafika JS

Grafika JS JS płótno JS Działka JS Chart.js Wykres JS Google JS D3.js

Przykłady JS

Przykłady JS JS HTML DOM Wejście JS HTML Obiekty HTML JS Wydarzenia JS HTML Przeglądarka JS Edytor JS Ćwiczenia JS JS Quiz Certyfikat JS

Referencje JS

Obiekty JavaScript Obiekty HTML DOM


JavaScript HTML Nawigacja DOM


Dzięki HTML DOM możesz nawigować po drzewie węzłów za pomocą relacji węzłów.


Węzły DOM

Zgodnie ze standardem W3C HTML DOM, wszystko w dokumencie HTML jest węzłem:

  • Cały dokument jest węzłem dokumentu
  • Każdy element HTML jest węzłem elementu
  • Tekst wewnątrz elementów HTML to węzły tekstowe
  • Każdy atrybut HTML jest węzłem atrybutu (przestarzałe)
  • Wszystkie komentarze są węzłami komentarzy
DOM HTML tree

Dzięki HTML DOM wszystkie węzły w drzewie węzłów są dostępne przez JavaScript.

Można tworzyć nowe węzły, a wszystkie węzły można modyfikować lub usuwać.


Relacje węzłów

Węzły w drzewie węzłów są ze sobą powiązane hierarchicznie.

Terminy rodzic, dziecko i rodzeństwo są używane do opisania relacji.

  • W drzewie węzłów najwyższy węzeł nazywa się korzeniem (lub węzłem głównym)
  • Każdy węzeł ma dokładnie jednego rodzica, z wyjątkiem korzenia (który nie ma rodzica)
  • Węzeł może mieć wiele dzieci
  • Rodzeństwo (bracia lub siostry) to węzły z tym samym rodzicem
<html>

  <head>
    <title>DOM Tutorial</title>
  </head>

  <body>
    <h1>DOM Lesson one</h1>
    <p>Hello world!</p>
  </body>

</html>
Drzewo węzłów

Z powyższego kodu HTML możesz przeczytać:

  • <html> jest węzłem głównym
  • <html> nie ma rodziców
  • <html>jest rodzicem <head>i<body>
  • <head> jest pierwszym dzieckiem <html>
  • <body> jest ostatnim dzieckiem <html>

oraz:

  • <head> ma jedno dziecko: <title>
  • <title> ma jedno dziecko (węzeł tekstowy): „DOM Tutorial”
  • <body>ma dwoje dzieci: <h1>i<p>
  • <h1> ma jedno dziecko: „Lekcja pierwsza DOM”
  • <p> ma jedno dziecko: „Witaj świecie!”
  • <h1>i <p>są rodzeństwem


Nawigacja między węzłami

Możesz użyć następujących właściwości węzła, aby nawigować między węzłami za pomocą JavaScript:

  • parentNode
  • childNodes[nodenumber]
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

Węzły podrzędne i wartości węzłów

Częstym błędem podczas przetwarzania DOM jest oczekiwanie, że węzeł elementu będzie zawierał tekst.

Przykład:

<title id="demo">DOM Tutorial</title>

Węzeł elementu <title>(w powyższym przykładzie) nie zawiera tekstu.

Zawiera węzeł tekstowy o wartości „DOM Tutorial”.

Dostęp do wartości węzła tekstowego można uzyskać za pomocą właściwości węzła innerHTML:

myTitle = document.getElementById("demo").innerHTML;

Dostęp do właściwości innerHTML jest taki sam jak dostęp do nodeValue właściwości pierwszego dziecka:

myTitle = document.getElementById("demo").firstChild.nodeValue;

Dostęp do pierwszego dziecka można również wykonać w ten sposób:

myTitle = document.getElementById("demo").childNodes[0].nodeValue;

Wszystkie (3) poniższe przykłady pobierają tekst <h1>elementu i kopiują go do <p>elementu:

Przykład

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML;
</script>

</body>
</html>

Przykład

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>

Przykład

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02">Hello!</p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue;
</script>

</body>
</html>

Wewnętrzny HTML

W tym samouczku używamy właściwości innerHTML, aby pobrać zawartość elementu HTML.

Jednak poznanie innych powyższych metod jest przydatne do zrozumienia struktury drzewa i nawigacji w DOM.


Węzły główne DOM

Istnieją dwie specjalne właściwości, które umożliwiają dostęp do pełnego dokumentu:

  • document.body- Treść dokumentu
  • document.documentElement- Pełny dokument

Przykład

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.body</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.body.innerHTML;
</script>

</body>
</html>

Przykład

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.documentElement</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.documentElement.innerHTML;
</script>

</body>
</html>

Właściwość nodeName

Właściwość nodeNameokreśla nazwę węzła.

  • nodeName jest tylko do odczytu
  • nodeName węzła elementu jest taka sama jak nazwa tagu
  • nodeName atrybutu node to nazwa atrybutu
  • nodeName węzła tekstowego to zawsze #text
  • nodeName węzła dokumentu to zawsze #document

Przykład

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName;
</script>

Uwaga: nodeName zawsze zawiera nazwę znacznika pisanego wielkimi literami elementu HTML.


Właściwość nodeValue

Właściwość nodeValueokreśla wartość węzła.

  • nodeValue dla węzłów elementów tonull
  • nodeValue dla węzłów tekstowych to sam tekst
  • nodeValue dla węzłów atrybutów to wartość atrybutu

Właściwość nodeType

Właściwość nodeTypejest tylko do odczytu. Zwraca typ węzła.

Przykład

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType;
</script>

Najważniejsze właściwości nodeType to:

Node Type Example
ELEMENT_NODE 1 <h1 class="heading">W3Schools</h1>
ATTRIBUTE_NODE 2  class = "heading" (deprecated)
TEXT_NODE 3 W3Schools
COMMENT_NODE 8 <!-- This is a comment -->
DOCUMENT_NODE 9 The HTML document itself (the parent of <html>)
DOCUMENT_TYPE_NODE 10 <!Doctype html>

Typ 2 jest przestarzały w HTML DOM (ale działa). Nie jest przestarzały w XML DOM.