HOWTO · JavaScript

Verifique se o elemento existe no DOM em JavaScript

Este tutorial explica como verificar se o elemento existe no DOM em JavaScript

Nesta página

Para verificar se existe um elemento correspondente, use a busca adequada à forma como você o identifica. document.getElementById() retorna o elemento correspondente ou null; portanto, teste se o resultado é truthy. As buscas por classe e por tag retornam coleções; verifique o length, pois até uma coleção vazia é truthy.

Use getElementById() para encontrar um único elemento correspondente

Use getElementById() quando souber o id exclusivo de um elemento. Ele retorna um Element quando encontra o ID ou null quando nenhum elemento tem esse ID. Informe o ID sem o prefixo #.

O exemplo a seguir procura, em uma página do navegador, o link com ID help-link:

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

<a id="help-link" href="/help">Help</a>
<script>
  const helpLink = document.getElementById("help-link");
  const exists = helpLink !== null;
  console.log(exists);
</script>

A variável exists é do tipo Boolean. Boolean(helpLink) ou !!helpLink também converte o resultado em true ou false. Use !== null quando quiser explicitar na verificação o que a busca retorna.

Verifique correspondências por classe, nome e tag

Use getElementsByClassName() para buscar uma classe, getElementsByName() para buscar um atributo name e getElementsByTagName() para buscar uma tag de elemento. Esses métodos usam atributos diferentes: por exemplo, o valor de uma classe fica em class, enquanto o nome de um controle de formulário fica em name.

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

<input class="search-field" name="query">
<script>
  const byClass = document.getElementsByClassName("search-field");
  const byName = document.getElementsByName("query");
  const byTag = document.getElementsByTagName("input");

  console.log(byClass.length > 0);
  console.log(byName.length > 0);
  console.log(byTag.length > 0);
</script>

getElementsByClassName() e getElementsByTagName() retornam objetos HTMLCollection dinâmicos. getElementsByName() retorna um NodeList. Quando não há correspondências, o comprimento da coleção é 0; ela continua sendo um objeto, não null. Para verificar se há alguma correspondência, use collection.length > 0 (ou collection.length !== 0).

Entenda os resultados das buscas e as verificações booleanas

Uma busca que retorna um único elemento e outra que retorna uma coleção exigem verificações de existência diferentes. Converta o resultado de getElementById() com Boolean(element) ou compare-o com null. Para uma coleção obtida por uma busca de classe, nome ou tag, verifique length. Aplicar !! diretamente à coleção não indica se ela contém algum elemento: tanto uma coleção vazia quanto uma com elementos é truthy.

Escolha a API conforme a pergunta: “existe um elemento com este ID?” ou “quantos elementos correspondem a este critério?”. Se ainda precisar dos elementos, mantenha o elemento ou a coleção retornada em vez de convertê-los em Boolean cedo demais.

Execute este exemplo:

O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.

const matches = [{ id: "help-link" }];
const exists = matches.length > 0;
console.log(exists);

O exemplo ilustra isoladamente a verificação do comprimento da coleção; os trechos específicos do DOM acima são código-fonte para páginas do navegador e não são executados aqui.

Verifique se um nó está dentro de document.body

document.body.contains(node) retorna um Boolean que indica se node é o próprio body ou um descendente dele. A verificação considera a árvore do DOM, não se o nó está visível na tela. Um nó pode estar no body e ainda assim ficar oculto por CSS ou não ser exibido por outro motivo.

Passe um único nó para contains(). Se uma busca retornar uma coleção, escolha primeiro um item e considere que ela pode estar vazia. Por exemplo, const matches = document.getElementsByName("query"); const isInBody = matches.length > 0 && document.body.contains(matches[0]); verifica somente o primeiro nó correspondente; não testa todos. Se a pergunta for se algum nó correspondente está no body, verifique os itens individualmente.