Olá Guilherme! Vamos esclarecer suas dúvidas sobre o uso de .textContent
e .value
no seu código JavaScript.
No seu código, você tentou atribuir diretamente o valor de nome
à lista
, mas isso não funcionou porque nome
e lista
são, respectivamente, o valor do input e o texto de um elemento HTML. Veja o que aconteceu:
let nome = document.getElementById('nome-amigo').value; // 'nome' é agora uma string com o valor do input
let lista = document.getElementById('lista-amigos').textContent; // 'lista' é uma string com o texto do elemento
lista = nome; // Aqui você está apenas mudando o valor da variável 'lista', não o conteúdo do elemento HTML
Quando você faz lista = nome;
, você está apenas substituindo o valor da variável lista
com o valor de nome
, mas isso não afeta o conteúdo da página. A variável lista
não está mais ligada ao elemento HTML após receber o valor de nome
.
Por outro lado, no código dos professores, eles mantêm a referência aos elementos da página e manipulam suas propriedades diretamente, o que efetivamente altera o conteúdo na página:
let nome = document.getElementById('nome-amigo'); // 'nome' é uma referência ao elemento input
let lista = document.getElementById('lista-amigos'); // 'lista' é uma referência ao elemento que contém os amigos
lista.textContent = nome.value; // Aqui o conteúdo de texto de 'lista' é atualizado com o valor do input 'nome'
Neste caso, nome.value
acessa o valor atual do campo de input, e lista.textContent
atualiza o texto do elemento lista
no HTML. Essa é a maneira correta de manipular o conteúdo de elementos HTML através de JavaScript para que as mudanças se reflitam na sua página.
Espero que essa explicação tenha esclarecido a diferença entre atribuir valores a variáveis e modificar propriedades de objetos do DOM.