Tutorial de JS

JS HOME Introdução JS JS Para onde Saída JS Declarações JS Sintaxe JS Comentários JS Variáveis ​​JS JS Let JS Const Operadores JS JS Aritmética Atribuição de JS Tipos de dados JS Funções JS Objetos JS Eventos JS Strings JS Métodos de string JS Pesquisa de String JS Modelos de String JS Números JS Métodos de número JS Matrizes JS Métodos de matriz JS Classificação de matriz JS Iteração de matriz JS Const da matriz JS Datas JS Formatos de data JS Métodos de obtenção de data JS Métodos de conjunto de datas JS JS Math JS Aleatório JS Booleanos Comparações JS Condições JS Interruptor JS Circuito JS para JS Loop Para Entrada JS Loop Para De JS Loop Enquanto Quebra de JS Iteráveis ​​JS Conjuntos JS Mapas JS Tipo JS de Conversão de tipo JS JS bit a bit JS RegExp Erros JS Escopo JS Içamento JS Modo estrito JS JS esta palavra-chave Função de seta JS Classes JS JS JSON Depuração JS Guia de estilo JS Práticas recomendadas de JS Erros de JS Desempenho JS Palavras reservadas JS

Versões JS

Versões JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge Histórico de JS

Objetos JS

Definições de objeto Propriedades do objeto Métodos de objeto Exibição de objetos Acessadores de objetos Construtores de objetos Protótipos de Objetos Iteráveis ​​de objeto Conjuntos de objetos Mapas de objetos Referência do objeto

Funções JS

Definições de função Parâmetros de função Invocação de função Chamada de Função Função Aplicar Fechamentos de Função

Classes JS

Introdução à aula Herança de classe Classe Estática

JS Assíncrono

Retornos de chamada JS JS Assíncrono Promessas JS JS Async/Aguardar

JS HTML DOM

Introdução ao DOM Métodos DOM Documento DOM Elementos DOM HTML DOM Formulários DOM CSS DOM Animações DOM Eventos DOM Ouvinte de eventos DOM Navegação DOM Nós DOM Coleções DOM Listas de nós DOM

BOM do navegador JS

Janela JS Tela JS Localização JS Histórico de JS Navegador JS Alerta pop-up JS Temporização JS Cookies JS

APIs da Web JS

Introdução à API da Web API de formulários da Web API de histórico da web API de armazenamento da Web API do trabalhador da Web API de busca da Web API de geolocalização da Web

JS AJAX

Introdução AJAX AJAX XML Http Solicitação AJAX Resposta AJAX Arquivo XML AJAX PHP AJAX ASP AJAX Banco de dados AJAX Aplicativos AJAX Exemplos AJAX

JS JSON

Introdução JSON Sintaxe JSON JSON x XML Tipos de dados JSON Análise JSON JSON Stringify Objetos JSON Matrizes JSON Servidor JSON JSON PHP HTML JSON JSON JSONP

JS x jQuery

Seletores jQuery HTML jQuery jQuery CSS jQuery DOM

Gráficos JS

Gráficos JS Tela JS JS Plotly JS Chart.js JS Google Chart JS D3.js

Exemplos JS

Exemplos JS JS HTML DOM Entrada HTML JS Objetos HTML JS Eventos HTML JS Navegador JS Editor JS Exercícios JS Teste JS Certificado JS

Referências JS

Objetos JavaScript Objetos HTML DOM


Navegação JavaScript HTML DOM


Com o HTML DOM, você pode navegar na árvore de nós usando relacionamentos de nós.


Nós DOM

De acordo com o padrão W3C HTML DOM, tudo em um documento HTML é um nó:

  • O documento inteiro é um nó de documento
  • Cada elemento HTML é um nó de elemento
  • O texto dentro dos elementos HTML são nós de texto
  • Cada atributo HTML é um nó de atributo (obsoleto)
  • Todos os comentários são nós de comentários
DOM HTML tree

Com o HTML DOM, todos os nós na árvore de nós podem ser acessados ​​por JavaScript.

Novos nós podem ser criados e todos os nós podem ser modificados ou excluídos.


Relacionamentos de nós

Os nós na árvore de nós têm um relacionamento hierárquico entre si.

Os termos pai, filho e irmão são usados ​​para descrever os relacionamentos.

  • Em uma árvore de nós, o nó superior é chamado de raiz (ou nó raiz)
  • Cada nó tem exatamente um pai, exceto a raiz (que não tem pai)
  • Um nó pode ter vários filhos
  • Irmãos (irmãos ou irmãs) são nós com o mesmo pai
<html>

  <head>
    <title>DOM Tutorial</title>
  </head>

  <body>
    <h1>DOM Lesson one</h1>
    <p>Hello world!</p>
  </body>

</html>
Árvore de nós

No HTML acima você pode ler:

  • <html> é o nó raiz
  • <html> não tem pais
  • <html>é o pai de <head>e<body>
  • <head> é o primeiro filho de <html>
  • <body> é o último filho de <html>

e:

  • <head> tem um filho: <title>
  • <title> tem um filho (um nó de texto): "Tutorial DOM"
  • <body>tem dois filhos: <h1>e<p>
  • <h1> tem um filho: "DOM Lesson one"
  • <p> tem um filho: "Hello world!"
  • <h1>e <p>são irmãos


Navegando entre nós

Você pode usar as seguintes propriedades de nó para navegar entre nós com JavaScript:

  • parentNode
  • childNodes[nodenumber]
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

Nós filhos e valores de nós

Um erro comum no processamento do DOM é esperar que um nó de elemento contenha texto.

Exemplo:

<title id="demo">DOM Tutorial</title>

O nó do elemento <title>(no exemplo acima) não contém texto.

Ele contém um nó de texto com o valor "Tutorial DOM".

O valor do nó de texto pode ser acessado pela innerHTMLpropriedade do nó:

myTitle = document.getElementById("demo").innerHTML;

Acessar a propriedade innerHTML é o mesmo que acessar a propriedade nodeValue do primeiro filho:

myTitle = document.getElementById("demo").firstChild.nodeValue;

O acesso ao primeiro filho também pode ser feito assim:

myTitle = document.getElementById("demo").childNodes[0].nodeValue;

Todos os (3) exemplos a seguir recuperam o texto de um <h1>elemento e o copiam em um <p>elemento:

Exemplo

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").innerHTML;
</script>

</body>
</html>

Exemplo

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").firstChild.nodeValue;
</script>

</body>
</html>

Exemplo

<html>
<body>

<h1 id="id01">My First Page</h1>
<p id="id02">Hello!</p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").childNodes[0].nodeValue;
</script>

</body>
</html>

InnerHTML

Neste tutorial, usamos a propriedade innerHTML para recuperar o conteúdo de um elemento HTML.

No entanto, aprender os outros métodos acima é útil para entender a estrutura da árvore e a navegação do DOM.


Nós raiz do DOM

Existem duas propriedades especiais que permitem o acesso ao documento completo:

  • document.body- O corpo do documento
  • document.documentElement- O documento completo

Exemplo

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.body</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.body.innerHTML;
</script>

</body>
</html>

Exemplo

<html>
<body>

<h2>JavaScript HTMLDOM</h2>
<p>Displaying document.documentElement</p>

<p id="demo"></p>

<script>
document.getElementById("demo").innerHTML = document.documentElement.innerHTML;
</script>

</body>
</html>

A propriedade nodeName

A nodeNamepropriedade especifica o nome de um nó.

  • nodeName é somente leitura
  • nodeName de um nó de elemento é o mesmo que o nome da tag
  • nodeName de um nó de atributo é o nome do atributo
  • nodeName de um nó de texto é sempre #text
  • nodeName do nó do documento é sempre #document

Exemplo

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeName;
</script>

Nota: nodeName sempre contém o nome da tag em maiúsculas de um elemento HTML.


A propriedade nodeValue

A nodeValuepropriedade especifica o valor de um nó.

  • nodeValue para nós de elemento énull
  • nodeValue para nós de texto é o próprio texto
  • nodeValue para nós de atributo é o valor do atributo

A propriedade nodeType

A nodeTypepropriedade é somente leitura. Ele retorna o tipo de um nó.

Exemplo

<h1 id="id01">My First Page</h1>
<p id="id02"></p>

<script>
document.getElementById("id02").innerHTML = document.getElementById("id01").nodeType;
</script>

As propriedades nodeType mais importantes são:

Node Type Example
ELEMENT_NODE 1 <h1 class="heading">W3Schools</h1>
ATTRIBUTE_NODE 2  class = "heading" (deprecated)
TEXT_NODE 3 W3Schools
COMMENT_NODE 8 <!-- This is a comment -->
DOCUMENT_NODE 9 The HTML document itself (the parent of <html>)
DOCUMENT_TYPE_NODE 10 <!Doctype html>

O tipo 2 está obsoleto no HTML DOM (mas funciona). Ele não está obsoleto no XML DOM.