-
Notifications
You must be signed in to change notification settings - Fork 0
2 Segunda Etapa
Nesta aula, iremos aprender mais formas de interação entre o HTML e o JS. Ao fim deste documento, você tera visto sobre:
- Tags
<p>
,<div>
e<textarea>
do HTML - Concatenação de texto
- Edição de elementos HTML através do JS
Ao final desta etapa nosso projeto estará pronto para, de uma forma simples, adicionar novas notas na tela baseado no o que foi escrito em uma caixa de texto.
Utilizaremos uma nova tag, chamada textarea
:
<textarea></textarea>
Insira esta tag dentro do <body>
de index.html
. Para isso, localize a linha com o código <body>
, crie uma nova linha abaixo desta, e adicione o código da nova tag textarea
acima. O que acontece com a sua página?
O elemento <textarea>
serve para criar uma caixa capaz de receber o texto de um usuário.
Agora que temos um elemento próprio para receber o texto de uma nota, vamos editar nossa função dizOi
e chamá-la de adicionarNota
:
function adicionarNota() {
}
Lembre-se de também renomear a função dentro de addEventListener
:
botaoAddNota.addEventListener('click', () => adicionarNota())
Dentro dessa função queremos acessar o elemento que criamos no passo anterior. Para isso, precisamos adicionar um id
ao elemento textarea
. No arquivo index.html
:
<textarea id="area-de-texto"></textarea>
Agora podemos fazer o mesmo processo da aula anterior. Usando document.getElementById
fora de nossa função adicionarNota
:
const novaNota = document.getElementById('area-de-texto')
function adicionarNota() {
}
Na aula anterior, vimos uma das propriedades do elemento button
, o addEventListener
.
O elemento <textarea>
também tem propriedades que podemos acessar de forma similar. A propriedade que nos interessa aqui, é a propriedade value
.
Essa propriedade nos diz qual o valor do elemento <textarea>
. Em outras palavras, o que foi escrito dentro do elemento:
const novaNota = document.getElementById('area-de-texto')
function adicionarNota() {
const textoNovaNota = novaNota.value
}
Vamos experimentar usando o console.log
:
const novaNota = document.getElementById('area-de-texto')
function adicionarNota() {
const textoNovaNota = novaNota.value
console.log(textoNovaNota)
}
Escreva na caixa de texto e aperte o botão. O que acontece no console
?
Nosso próximo objetivo é conectar este valor que recebemos no JS com o HTML para que ele possa ser exibido na página, e não somente no console.log
.
A seguir, vamos aprender sobre as tags <div>
e <p>
, necessárias para o próximo passo.
Agora que já estamos capiturando o valor do campo de texto, o próximo passo é entender como exibir este valor na nossa página.
Antes de ir para o código, vamos aprender sobre as tags <div>
e <p>
.
Significa parágrafo. Esta tag cria um parágrafo de texto no site. Para nós, cada Nota será um parágrafo novo. Exemplo:
<p>Minha primeira nota</p>
Significa divisão de elementos no site. É uma tag utilizada para organizar nosso HTML.
Quando temos elementos que se repetem (como as nossas notas) é comum estes elementos ficarem dentro de uma tag div
. Exemplo:
<div>
<p>Minha primeira nota</p>
<p>Minha segunda nova</p>
</div>
Vá no seu arquivo index.html
e, abaixo da tag <button>
adicione o seguinte código:
<div>
<p>Anotação 1</p>
<p>Anotação 2</p>
</div>
Analise o resultado deste código ao executar o projeto.
Nosso próximo objetivo é tornar esta lista dinâmica em vez de manualmente adicionar novas notas no HTML. Queremos utilizar o valor recebido da caixa de texto de alterar o HTML com aquele dado.
A seguir vamos aprender sobre Concatenação de textos, um conceito importante para criar tags HTML de dentro do JavaScript.
Outro conceito importante para continuarmos é o de concatenação de textos no JavaScript. Concatenar significa "unir" dois ou mais pedaços de textos em uma única variável.
Existem algumas formas diferentes para se unir textos no JS.
Aqui iremos utilizar o operador +
. Quando usado com números, o +
executa a soma, como esperado. Mas quando utilizado com textos no meio da operação, se torna um operador de união ou concatenação:
console.log(2 + 2) // Resultado: 4
console.log('a' + 'b') // Resultado: 'ab'
console.log(2 + 'a') // Qual o resultado desta operação?
Exemplo mais completo:
const texto1 = 'ola, '
const texto2 = 'meu nome é '
const nome = 'João'
console.log(texto1 + texto2 + nome)
// Resultado: 'ola, meu nome é João'
Agora que sabemos como juntar diferentes partes de um texto, vamos voltar ao nosso script.js
para finalmente gerar nossa lista dinâmica.
Nesta etapa, vamos alterar nossa div
no HTML, removendo as anotações adicionadas manualmente. Também vamos adicionar um id
para que possamos encontrar o elemento no JS.
No index.html
, a div
deve ficar assim:
<div id="lista-notas">
</div>
No script.js
vamos voltar alterar nossa função adicionarNota()
. Nela, vmoasPerceba como a concatenação de textos é utilizada para criar uma tag <p>
direto do JS:
function adicionarNota() {
// 1a etapa: monta código HTML que será adicionado à página
const notas = document.getElementById('notas')
const textoNovaNota = elementoNovaNota.value
const novaNotaHTML = '<p>' + textoNovaNota + '</p>'
console.log(novaNotaHTML)
}
Execute o código e teste: ao digitar uma nota e clicar no botão, devemos ver, no console.log
, o código HTML que devemos exibir na página.
O próximo agora passo é pegar este código e colocar dentro da tag div
que criamos no index.html
.
No JavaScript, podemos acessar ou alterar todo o HTML interno de um dado element usando elemento.innerHTML
. No nosso caso, queremos alterar o conteúdo HTML da nossa div
para incluir as novas notas.
A propriedade innerHTML
é utilizada para isto. Exemplo:
meuElemento.innerHTML // recupera o código HTML de dentro do elemento
meuElemento.innerHTML = '' // sobrescreve HTML interno. Neste caso apagando
Utilizando o novo conceito de "HTML interno" apresentado acima, nossa função adicionarNota
ficará assim:
function adicionarNota() {
// 1a etapa: monta código HTML que será adicionado à página
const notas = document.getElementById('notas')
const textoNovaNota = elementoNovaNota.value
const novaNotaHTML = '<p>' + textoNovaNota + '</p>'
// 2a etapa: adiciona a nova Nota como um parágrafo no site
const notasAtuais = notas.innerHTML
const notasFinais = notasAtuais + novaNotaHTML
notas.innerHTML = notasFinais
}
Execute este código e brinque um pouco com o resultado. Após isto, retorne ao código e busque entendê-lo 100%. Este conceitos novos vão aparecer bastante no dia-a-dia trabalhando com programação.
Parabéns! Seu projeto agora consegue receber e exibir uma lista simples de anotações!. E tudo isto com poucas linhas de JavaScript e HTML 😄
- https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/div
- https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/p
- https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/Addition
- https://developer.mozilla.org/pt-BR/docs/Web/API/Element/innerHTML
- https://developer.mozilla.org/pt-BR/docs/Web/API/Document/getElementById
- https://developer.mozilla.org/pt-BR/docs/Web/API/Console/log