Adicionando e removendo nós (elementos HTML)
Para adicionar um novo elemento ao HTML DOM, você deve primeiro criar o elemento (nó do elemento), e, em seguida, anexe-o a um elemento existente.
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<script>
const para = document.createElement("p");
const node = document.createTextNode("This is new.");
para.appendChild(node);
const element = document.getElementById("div1");
element.appendChild(para);
</script>
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript HTML DOM</h2>
<p>Add a new HTML Element.</p>
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<script>
const para = document.createElement("p");
const node = document.createTextNode("This is new.");
para.appendChild(node);
const element = document.getElementById("div1");
element.appendChild(para);
</script>
</body>
</html>
Este código cria um novo elemento <p>
:
const para = document.createElement("p");
Para adicionar texto ao elemento <p>
, você deve primeiro criar um nó de texto. Este código cria um nó de texto:
const node = document.createTextNode("This is a new paragraph.");
Em seguida, você deve anexar o nó de texto ao elemento <p>
:
para.appendChild(node);
Finalmente você deve anexar o novo elemento a um elemento existente.
Este código encontra um elemento existente:
const element = document.getElementById("div1");
Este código anexa o novo elemento ao elemento existente:
element.appendChild(para);
O método appendChild()
no exemplo anterior anexou o novo elemento como o último filho do pai.
Se você não quiser, você pode usar o método insertBefore()
:
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<script>
const para = document.createElement("p");
const node = document.createTextNode("This is new.");
para.appendChild(node);
const element = document.getElementById("div1");
const child = document.getElementById("p1");
element.insertBefore(para, child);
</script>
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript HTML DOM</h2>
<p>Add a new HTML Element.</p>
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<script>
const para = document.createElement("p");
const node = document.createTextNode("This is new.");
para.appendChild(node);
const element = document.getElementById("div1");
const child = document.getElementById("p1");
element.insertBefore(para,child);
</script>
</body>
</html>
Para remover um elemento HTML, use o remove()
método:
<div>
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<script>
const elmnt = document.getElementById("p1");
elmnt.remove();
</script>
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript HTML DOM</h2>
<h3>Remove an HTML Element.</h3>
<div>
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<button onclick="myFunction()">Remove Element</button>
<script>
function myFunction() {
document.getElementById("p1").remove();
}
</script>
</body>
</html>
O documento HTML contém um elemento <div>
com dois nós filhos (dois <p>
elementos):
<div>
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
Encontre o elemento que deseja remover:
const elmnt = document.getElementById("p1");
Em seguida, execute o método remove() nesse elemento:
elmnt.remove();
O método remove()
não funciona em navegadores mais antigos, veja o exemplo abaixo sobre como usar removeChild()
em vez disso.
Para navegadores que não suportam o método remove()
, você deve encontrar o nó pai para remover um elemento:
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<script>
const parent = document.getElementById("div1");
const child = document.getElementById("p1");
parent.removeChild(child);
</script>
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript HTML DOM</h2>
<p>Remove Child Element</p>
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<script>
const parent = document.getElementById("div1");
const child = document.getElementById("p1");
parent.removeChild(child);
</script>
</body>
</html>
Este documento HTML contém um elemento <div>
com dois nós filhos (dois <p>
elementos):
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
Encontre o elemento com id="div1"
:
const parent = document.getElementById("div1");
Encontre o elemento <p>
com id="p1"
:
const child = document.getElementById("p1");
Remova o filho do pai:
parent.removeChild(child);
Aqui está uma solução alternativa comum: Encontre o filho que você deseja remover e use seu Propriedade parentNode
para encontrar o pai:
const child = document.getElementById("p1");
child.parentNode.removeChild(child);
Para substituir um elemento no HTML DOM, use o método replaceChild()
:
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is another paragraph.</p>
</div>
<script>
const para = document.createElement("p");
const node = document.createTextNode("This is new.");
para.appendChild(node);
const parent = document.getElementById("div1");
const child = document.getElementById("p1");
parent.replaceChild(para, child);
</script>
Experimente você mesmo →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript HTML DOM</h2>
<h3>Replace an HTML Element.</h3>
<div id="div1">
<p id="p1">This is a paragraph.</p>
<p id="p2">This is a paragraph.</p>
</div>
<script>
const parent = document.getElementById("div1");
const child = document.getElementById("p1");
const para = document.createElement("p");
const node = document.createTextNode("This is new.");
para.appendChild(node);
parent.replaceChild(para,child);
</script>
</body>
</html>