CodeGym /Cursos Java /Frontend SELF PT /Navegação no DOM

Navegação no DOM

Frontend SELF PT
Nível 41 , Lição 1
Disponível

2.1 Métodos de acesso a elementos

Navegar pelo DOM (Document Object Model) é uma tarefa importante quando se trabalha com documentos web. JavaScript oferece muitos métodos para buscar e acessar elementos do documento. Esses métodos permitem aos desenvolvedores encontrar facilmente os elementos necessários e manipulá-los.

1. Método getElementById()

O método getElementById() retorna um elemento que possui o atributo id com o valor especificado. Este é um dos métodos mais simples e frequentemente usados.

Exemplo:

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); // Vai mostrar: This is the content
          </script>
        </body>
      </html>
    
  

2. Método getElementsByClassName()

O método getElementsByClassName() retorna uma coleção de todos os elementos que possuem a classe especificada. A coleção é "viva", o que significa que ela é automaticamente atualizada ao se modificar o DOM.

Exemplo:

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); // Vai mostrar: 3
          </script>
        </body>
      </html>
    
  

3. Método getElementsByTagName()

O método getElementsByTagName() retorna uma coleção de todos os elementos com a tag especificada. Essa coleção também é "viva".

Exemplo:

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); // Vai mostrar: 3
          </script>
        </body>
      </html>
    
  

4. Método querySelector()

O método querySelector() retorna o primeiro elemento que corresponde ao seletor CSS especificado. Este é um método muito poderoso e flexível para buscar elementos.

Exemplo:

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); // Vai mostrar: Paragraph 2
          </script>
        </body>
      </html>
    
  

5. Método querySelectorAll()

O método querySelectorAll() retorna uma coleção estática (não atualizável) de todos os elementos, que correspondem ao seletor CSS especificado.

Exemplo:

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); // Vai mostrar: 3
          </script>
        </body>
      </html>
    
  

2.2 Navegação por nós

DOM também fornece métodos para navegar pelos nós em relação ao elemento atual.

1. Propriedade parentNode

A propriedade parentNode retorna o nó pai do nó atual.

Exemplo:

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); // Vai mostrar: container
          </script>
        </body>
      </html>
    
  

2. Propriedade childNodes

A propriedade childNodes retorna uma coleção de todos os nós filhos do nó atual, incluindo os nós de texto.

Exemplo:

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); // Vai mostrar a quantidade de todos os nós filhos, incluindo os de texto
          </script>
        </body>
      </html>
    
  

Talvez ainda esteja se perguntando, por que o resultado é 7?

Como já foi dito acima, a propriedade childNodes retorna uma coleção de todos os nós filhos do nó atual, incluindo nós de texto (espaços, símbolos, novas linhas, etc.). A marcação HTML contém espaços e novas linhas entre os elementos <li>, que também são considerados nós separados.

No exemplo acima, entre a tag <ul> e o primeiro <li> há uma nova linha (e possivelmente espaço) — isso é considerado um nó de texto. A mesma situação entre todos os <li> e após o último <li>. Portanto, em vez de três elementos de lista, childNodes inclui esses nós de texto, o que leva a um total de 7.

Para obter apenas os elementos (ignorando os nós de texto), você pode usar a propriedade children, que retorna apenas os elementos filhos:

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. Propriedades firstChild e lastChild

As propriedades firstChild e lastChild retornam o primeiro e o último nó filho, respectivamente.

Exemplo:

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>
    
  

Você pode se surpreender que nada foi exibido no console. Mas este não é o caso. Os últimos nós filhos mostrados são Item 1 e Item 3 (nova linha). Se você foi pego nesse ponto, deve reler item 2. Propriedade childNodes

4. Propriedades nextSibling e previousSibling

As propriedades nextSibling e previousSibling retornam o próximo e o anterior nós no mesmo nível de hierarquia.

Exemplo:

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); // Vai mostrar: Item 3
            console.log(prev.textContent); // Vai mostrar: Item 1 (se ignorar os nós de texto)
          </script>
        </body>
      </html>
    
  

2.3 Navegação por nós de elemento

5. Propriedades nextElementSibling e previousElementSibling

Essas propriedades retornam os próximos e anteriores nós de elemento (ignorando texto e comentários).

Exemplo:

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); // Vai mostrar: Item 3
            console.log(prev.textContent); // Vai mostrar: Item 1
          </script>
        </body>
      </html>
    
  

6. Propriedades firstElementChild e lastElementChild

Essas propriedades retornam os primeiros e últimos nós filhos de elemento (ignorando texto e comentários).

Exemplo:

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); // Vai mostrar: Item 1
            console.log(last.textContent);  // Vai mostrar: Item 3
          </script>
        </body>
      </html>
    
  
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION