Vamos começar com uma página HTML simples de onde obteremos elementos específicos através de cada um dos métodos disponíveis:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Obtendo Elementos HTML do DOM</title>
<script src="./index.js"></script>
</head>
<body>
<h1>Obtendo Elementos HTML do DOM</h1>
<h2>Contatos</h2>
<ul id="contact-list">
<li>
<label for="contact1">Contato 1</label>
<input type="text" id="contact1" name="contact1" class="contact-input">
</li>
<li>
<label for="contact2">Contato 2</label>
<input type="text" id="contact2" name="contact2" class="contact-input">
</li>
<li>
<label for="contact3">Contato 3</label>
<input type="text" id="contact3" name="contact3" class="contact-input">
</li>
<button onclick="show()">
Exibir
</button>
</ul>
</body>
</html>
No javascript, através da função show() que será executada ao clicar no botão, podemos obter um elemento do DOM através do id:
function show() {
// Obter um elemento único a partir do seu id
const contactList = document.getElementById("contact-list")
console.log(contactList)
}
Também podemos obter elementos a partir de um nome de tag:
function show() {
// ...
// Obter vários elementos (HTMLCollection) a partir de um nome de tag
const liElements = document.getElementsByTagName("li")
console.log(liElements)
}
E também a partir de uma class:
function show() {
// ...
// Obter vários elementos (HTMLCollection) a partir de uma classe
const contactInputs = document.getElementsByClassName("contact-input")
console.log(contactInputs)
}
Podemos obter uma lista de elementos a partir do atributo name:
function show() {
// ...
// Obter vários elementos (NodeList) a partir do atributo name
const contact1 = document.getElementsByName("contact1")
console.log(contact1)
}
E o método mais flexível de todos, através de uma query (semelhante ao que fazemos com o CSS):
function show() {
// ...
// Obter vários elementos (NodeList) a partir de uma query (semelhante aos seletores do CSS)
const contacts = document.querySelectorAll("#contact-list > li > label")
console.log(contacts)
}
Além disso, também é possível obter um único elemento através de uma query. O comportamento é igual ao do querySelectorAll(), porém selecionando o primeiro elemento que corresponder à query:
Obs.: Repare que também podemos acessar propriedade internas do elemento obtido.
function show() {
// ...
// Obter um elemento a partir de uma query (o primeiro elemento a corresponder)
const contact = document.querySelector("#contact-list > li > label")
console.log(contact)
console.log(contact.textContent)
}