> For the complete documentation index, see [llms.txt](https://favelaware.gitbook.io/favelaware/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://favelaware.gitbook.io/favelaware/8-javascript-para-web/8.4-navegando-pelo-dom.md).

# 8.4 - Navegando pelo DOM

🔍 Navegando pelo DOM

## 🔍 Navegando pelo DOM

Agora que você já sabe o que é o DOM e por que ele é importante, vamos aprender **como navegar por ele usando JavaScript**.

> Lembra que o DOM é como uma árvore com caixinhas dentro de caixinhas? 📦🌳\
> Pois é, agora você vai aprender a **encontrar** essas caixinhas!

***

### 🗺️ O navegador como guia

Quando você escreve um código HTML, o navegador transforma isso em DOM.\
O **objeto principal que representa a página é o `document`**.

> O `document` é o ponto de partida para acessar tudo no DOM!

***

### 🆔 Acessando elementos com `getElementById`

Uma das formas mais simples de encontrar um elemento na página é pelo **`id`**.

#### 👇 Exemplo HTML:

```html
<h1 id="titulo">Bem-vindo!</h1>
```

#### 👉 Código JavaScript:

```javascript
const titulo = document.getElementById("titulo");
console.log(titulo); // Mostra o elemento <h1> no console
```

🧠 **Explicando:**

* `document` → o DOM da página
* `getElementById("titulo")` → procura o elemento com `id="titulo"`
* `const titulo` → guarda esse elemento numa variável

***

### 🧪 Testando no navegador

Você pode abrir o navegador, ir até uma página com HTML e:

1. Clicar com o botão direito → **Inspecionar**
2. Ir até a aba **Console**
3. Escrever:

```javascript
document.getElementById("titulo");
```

Se o elemento existir, ele aparece ali! 🎉

***

### 🗃️ Lembrando da estrutura em árvore

Vamos imaginar o HTML abaixo:

```html
<body>
  <h1 id="cabecalho">Título</h1>
  <p>Parágrafo 1</p>
  <p>Parágrafo 2</p>
</body>
```

Esse código vira uma árvore DOM assim:

```
📦 body
 ├── 📦 h1 (id="cabecalho")
 ├── 📦 p (Parágrafo 1)
 └── 📦 p (Parágrafo 2)
```

O navegador sabe onde está cada caixinha, e você pode pedir:

```javascript
const cabecalho = document.getElementById("cabecalho");
```

***

### ⚠️ Importante

* O `id` precisa ser **único** na página!
* Se não existir um elemento com o `id` que você escreveu, o resultado será `null` (ou seja, nada).

***

### ✅ Resumo até aqui

| Comando                  | O que faz                                  |
| ------------------------ | ------------------------------------------ |
| `document`               | Representa toda a página                   |
| `getElementById("nome")` | Acessa o elemento com o `id` especificado  |
| `console.log()`          | Mostra o resultado no console do navegador |

***

### 🧠 Desafio rápido!

1. Crie um arquivo HTML com o seguinte conteúdo:

```html
<h2 id="mensagem">Mensagem original</h2>
```

2. Em uma tag `<script>`, adicione:

```javascript
const mensagem = document.getElementById("mensagem");
mensagem.textContent = "Mensagem atualizada com JavaScript! 🚀";
```

3. Abra o arquivo no navegador e veja a mágica acontecer! ✨

***

Na próxima seção, vamos aprender a **alterar conteúdos da página**, como textos e estilos, usando o poder do DOM e do JavaScript! 😄


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://favelaware.gitbook.io/favelaware/8-javascript-para-web/8.4-navegando-pelo-dom.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
