Antes de manipular um elemento, você precisa encontrá-lo. O JavaScript oferece vários métodos através do objeto document (ou de qualquer elemento, para buscas escopadas).
getElementById() — O Clássico
O método mais rápido para selecionar um único elemento pelo ID único:
snippetJavaScript
// HTML: <div id="hero">Bem-vindo!</div> const hero = document.getElementById('hero');console.log(hero); // <div id="hero">Bem-vindo!</div>console.log(hero.textContent); // "Bem-vindo!" // Retorna null se não encontrar (não lança erro!)const fantasma = document.getElementById('inexistente');console.log(fantasma); // null
IDs devem ser únicos no documento. Duplicar IDs é HTML inválido!
querySelector() — O Moderno
Aceita qualquer seletor CSS e retorna o primeiro elemento correspondente (ou null):
snippetJavaScript
const primeiroBotao = document.querySelector('button');const btnSubmit = document.querySelector('#submit');const primeiroCard = document.querySelector('.card');const linkAtivo = document.querySelector('nav a.active');const item = document.querySelector('[data-id="123"]');
querySelectorAll() — Todos os Correspondentes
Retorna uma NodeList estática com todos os elementos que correspondem ao seletor:
snippetJavaScript
const todosBotoes = document.querySelectorAll('button');const todosCards = document.querySelectorAll('.card');const linhasPares = document.querySelectorAll('tr:nth-child(even)'); // IterartodosBotoes.forEach(btn => { btn.addEventListener('click', handleClick);});
Comparação Rápida
| Método | Retorna | Seletor CSS | Live? |
|---|
getElementById() | Element ou null | Só ID | N/A |
querySelector() | Element ou null | Qualquer CSS | N/A |
querySelectorAll() | NodeList | Qualquer CSS | Não (snapshot) |
getElementsByClassName() | HTMLCollection | Só classe | Sim (live) |
Regra prática: Use querySelector/querySelectorAll pela legibilidade. Use getElementById apenas se performance for crítica em loops com milhares de seleções.
Seleção Escopada
snippetJavaScript
const nav = document.querySelector('nav'); // Busca APENAS dentro de navconst linksNav = nav.querySelectorAll('a');const linkAtivo = nav.querySelector('.active');
Buscar dentro de um elemento pai é mais rápido e evita selecionar elementos indesejados em outras partes da página.