Javascript: elementos dinâmicos
De Aulas
Afluentes: Desenvolvimento Front-end I, Usabilidade, desenvolvimento web, mobile e jogos.
Elementos Dinâmicos
É possível, com o uso de Javascript, adicionar e remover qualquer tipo de elemento HTML de uma página.
Adicionando Elementos
<!DOCTYPE html>
<html>
<head><title> Elementos Dinâmicos </title></head>
<body>
<h1>Adicionar texto</h1>
<p>
Digite o texto:
<input type="text" id="input">
<button onclick="adicionar();">Adicionar</button>
</p>
<div id="conteudo"></div>
<script>
function adicionar() {
const input = document.getElementById("input");
const p = document.createElement("p");
p.appendChild(document.createTextNode(input.value));
const conteudo = document.getElementById("conteudo");
conteudo.appendChild(p);
input.value = "";
}
</script>
</body>
</html>
Veja que cria um parágrafo e adicionamos o texto usando um método chamado createTextNode
ao invés do p.innerHTML
. Isso porque esse método de entrada é mais apropriado e seguro para o caso de entradas dinâmicas.
Removendo Elementos
O exemplo a seguir remove um elemento da página html.
<!DOCTYPE html>
<html>
<head><title> Elementos Dinâmicos </title></head>
<body>
<h1>Remover Elementos</h1>
<button onclick="remover();">Remover</button>
<div id="conteudo">
<p id="texto">Texto que será removido....</p>
</div>
<script>
function remover() {
const pai = document.getElementById("conteudo");
const filho = document.getElementById("texto");
pai.removeChild(filho);
}
</script>
</body>
</html>
Adicionando e Removendo Dinamicamente
<!DOCTYPE html>
<html>
<head><title>Incluindo e Excluindo Elementos</title></head>
<body>
<h1>Cadastro de Itens</h1>
Texto: <input type="text" id="texto">
<button onclick="adicionar();">Adicionar</button>
<ul id="lista"></ul>
<script>
var id = 0; // Variável global para controle de IDs
function adicionar() {
const texto = document.getElementById("texto");
const lista = document.getElementById("lista");
const item = document.createElement("li");
// Adiciona um ID único ao item e incrementa o contador
item.id = `item_${id++}`;
item.appendChild(document.createTextNode(texto.value));
// Cria o botão de remover e o adiciona ao item
const button = document.createElement("button");
button.innerHTML = "X";
button.setAttribute("onclick", `remover("${item.id}");`);
item.appendChild(button);
lista.appendChild(item);
texto.value = ""; // Limpa o campo de texto
texto.focus(); // Foca no campo de texto
}
function remover(id) {
const lista = document.getElementById("lista");
const item = document.getElementById(id);
lista.removeChild(item);
}
</script>
</body>
</html>
Veja que para colocarmos um texto no botão usamos o innerHTML
e não o createTextNode
. Não que não podemos usar o createTextMode
como fizemos no exemplo anterior, mas é que como o texto do botão não é dinâmico, fica mais tranquilo usar o innerHTML
.
Atividades
Atividade 1
- Crie um documento HTML
- Adicione um título H1 na página com texto vazio
- Adicione um campo texto de entrada com label Nome
- Altere dinâmicamente o título H1 sempre que o usuário digitar qualquer coisa no campo texto
Atividade 2
- Crie um código HTML
- Crie um campo texto e um botão ENVIAR
- crie uma lista (bullets) vazia
- Ao clicar no botão ENVIAR, adiciona um ítem na lista com o conteúdo do campo texto e apague o conteúdo do campo texto
Atividade 3
- Crie um código HTML
- Crie três campos de entrada (nome, telefone, e-mail)
- Crie dois botões (adicionar, limpar)
- Crie uma tabela com três colunas e com os títulos Nome, Telefone e E-mai
- Ao entrar com informações nos campos texto e clicar no botão adicionar, é criada uma linha na tabela e são adicionados os dados que estavam nos campos de texto e os campos de texto são limpos
- Ao clicar no botão limpar, exclui todas as linhas da tabela, menos a linha de título