CodeGym /Kursy Java /Frontend SELF PL /Nawigacja po DOM

Nawigacja po DOM

Frontend SELF PL
Poziom 41 , Lekcja 1
Dostępny

2.1 Metody dostępu do elementów

Nawigacja po DOM (Document Object Model) jest ważnym zadaniem przy pracy z dokumentami webowymi. JavaScript oferuje wiele metod do wyszukiwania i dostępu do elementów dokumentu. Te metody pozwalają programistom łatwo znajdować potrzebne elementy i manipulować nimi.

1. Metoda getElementById()

Metoda getElementById() zwraca element, który ma atrybut id o wskazanej wartości. To jedna z najprostszych i najczęściej używanych metod.

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <div id="content">This is the content</div>

          <script>
            const contentDiv = document.getElementById('content');
            console.log(contentDiv.textContent); // Wyświetli: This is the content
          </script>
        </body>
      </html>
    
  

2. Metoda getElementsByClassName()

Metoda getElementsByClassName() zwraca kolekcję wszystkich elementów, które mają podaną klasę. Kolekcja jest "żywa", co oznacza, że automatycznie aktualizuje się przy zmianach w DOM.

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <p class="text">Paragraph 1</p>
          <p class="text">Paragraph 2</p>
          <p class="text">Paragraph 3</p>

          <script>
            const paragraphs = document.getElementsByClassName('text');
            console.log(paragraphs.length); // Wyświetli: 3
          </script>
        </body>
      </html>
    
  

3. Metoda getElementsByTagName()

Metoda getElementsByTagName() zwraca kolekcję wszystkich elementów z podanym tagiem. Ta kolekcja także jest "żywa".

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <p>Paragraph 1</p>
          <p>Paragraph 2</p>
          <p>Paragraph 3</p>

          <script>
            const paragraphs = document.getElementsByTagName('p');
            console.log(paragraphs.length); // Wyświetli: 3
          </script>
        </body>
      </html>
    
  

4. Metoda querySelector()

Metoda querySelector() zwraca pierwszy element, który pasuje do podanego selektora CSS. To bardzo potężna i elastyczna metoda do wyszukiwania elementów.

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
      <head>
        <title>Document</title>
      </head>
        <body>
          <div class="container">
            <p>Paragraph 1</p>
            <p class="highlight">Paragraph 2</p>
            <p>Paragraph 3</p>
          </div>

          <script>
            const highlightedParagraph = document.querySelector('.highlight');
            console.log(highlightedParagraph.textContent); // Wyświetli: Paragraph 2
          </script>
        </body>
      </html>
    
  

5. Metoda querySelectorAll()

Metoda querySelectorAll() zwraca statyczną (niezmienną) kolekcję wszystkich elementów, które pasują do podanego selektora CSS.

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <div class="container">
            <p>Paragraph 1</p>
            <p class="highlight">Paragraph 2</p>
            <p>Paragraph 3</p>
          </div>

          <script>
            const paragraphs = document.querySelectorAll('.container p');
            console.log(paragraphs.length); // Wyświetli: 3
          </script>
        </body>
      </html>
    
  

2.2 Nawigacja po węzłach

DOM również dostarcza metody do nawigacji po węzłach względem obecnego elementu.

1. Właściwość parentNode

Właściwość parentNode zwraca węzeł rodzica obecnego węzła.

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <div id="container">
            <p>Paragraph</p>
          </div>

          <script>
            const paragraph = document.querySelector('p');
            const parent = paragraph.parentNode;
            console.log(parent.id); // Wyświetli: container
          </script>
        </body>
      </html>
    
  

2. Właściwość childNodes

Właściwość childNodes zwraca kolekcję wszystkich węzłów potomnych obecnego węzła, w tym tekstowych.

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <ul id="list">
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
          </ul>

          <script>
            const list = document.getElementById('list');
            const children = list.childNodes;
            console.log(children.length); // Wyświetli liczbę wszystkich węzłów potomnych, w tym tekstowych
          </script>
        </body>
      </html>
    
  

Może wciąż się zastanawiasz, dlaczego wynik to 7?

Jak już wcześniej wspomniano, właściwość childNodes zwraca kolekcję wszystkich węzłów potomnych obecnego węzła, w tym tekstowych (spacje, znaki, nowe linie itp.). HTML zawiera spacje i nowe linie pomiędzy elementami <li>, które również są uważane za oddzielne węzły.

W powyższym przykładzie pomiędzy tagiem <ul> a pierwszym <li> jest nowa linia (oraz, być może, spacje) — to jest uznawane za węzeł tekstowy. Ta sama sytuacja występuje między wszystkimi <li> i po ostatnim <li>. Zatem, zamiast trzech elementów listy, childNodes obejmuje te węzły tekstowe, co prowadzi do całkowitej liczby — 7.

Aby uzyskać jedynie elementy (ignorując węzły tekstowe), można użyć właściwości children, która zwraca tylko węzły potomne jako elementy:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <ul id="list">
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
          </ul>

          <script>
            const list = document.getElementById('list');
            const children = list.children;
            console.log(children.length); // 3
          </script>
        </body>
      </html>
    
  

3. Właściwości firstChild i lastChild

Właściwości firstChild i lastChild zwracają odpowiednio pierwszy i ostatni węzeł potomny.

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <ul id="list">
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
          </ul>

          <script>
            const list = document.getElementById('list');
            const first = list.firstChild;
            const last = list.lastChild;
            console.log(first.textContent);
            console.log(last.textContent);
          </script>
        </body>
      </html>
    
  

Może cię zdziwić, że konsola nic nie wyświetliła. Ale tak nie jest. Wyświetliły się ostatni węzeł potomny Item 1 i Item 3 (nowa linia). Jeśli na tym się potknąłeś, jeszcze raz przeczytaj p.2 Właściwość childNodes

4. Właściwości nextSibling i previousSibling

Właściwości nextSibling i previousSibling zwracają odpowiednio kolejny i poprzedni węzeł na tym samym poziomie hierarchii.

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <ul id="list">
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
          </ul>

          <script>
            const secondItem = document.querySelector('li:nth-child(2)');
            const next = secondItem.nextSibling;
            const prev = secondItem.previousSibling;
            console.log(next.textContent); // Wyświetli: Item 3
            console.log(prev.textContent); // Wyświetli: Item 1 (jeśli pominiemy węzły tekstowe)
          </script>
        </body>
      </html>
    
  

2.3 Nawigacja po węzłach elementów

5. Właściwości nextElementSibling i previousElementSibling

Te właściwości zwracają kolejny i poprzedni węzeł elementu (pomijając tekstowe i komentarze).

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <ul id="list">
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
          </ul>

          <script>
            const secondItem = document.querySelector('li:nth-child(2)');
            const next = secondItem.nextElementSibling;
            const prev = secondItem.previousElementSibling;
            console.log(next.textContent); // Wyświetli: Item 3
            console.log(prev.textContent); // Wyświetli: Item 1
          </script>
        </body>
      </html>
    
  

6. Właściwości firstElementChild i lastElementChild

Te właściwości zwracają pierwszy i ostatni węzeł elementu (pomijając tekstowe i komentarze).

Przykład:

HTML
    
      <!DOCTYPE html>
      <html>
        <head>
          <title>Document</title>
        </head>
        <body>
          <ul id="list">
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
          </ul>

          <script>
            const list = document.getElementById('list');
            const first = list.firstElementChild;
            const last = list.lastElementChild;
            console.log(first.textContent); // Wyświetli: Item 1
            console.log(last.textContent);  // Wyświetli: Item 3
          </script>
        </body>
      </html>
    
  
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION