DEV Community

Elisa Drumond
Elisa Drumond

Posted on

3 1

Evento Click, Arrow Function e Hacks JS #2

Capa do Artigo

No segundo post de JavaScript vamos pensar no Evento Click e nas funções, mas especificamente a Arrow Function. Nosso projeto é uma calculadora de IMC que utiliza os principais conceitos de forma bem simplificada.

O Projeto

Projeto em desenvolvimento

Calculadora de IMC - Etapa 2

No HTML

Pensando em Evento de click, vou utilizar o id do botão para a manipulação na DOM.

<button id="button" type="button">Calcular IMC</button>
Enter fullscreen mode Exit fullscreen mode

No JavaScript

O processo é simples e vamos ver três conceitos

  • addEventListener
  • Arrow Function
  • innerHTML (Vamos precisar para resolver um bug)

Adicionando o Evento

Selecionamos o botão e adicionamos o Evento click e a partir desse momento, todas as vezes que clicarmos no botão, vamos disparar a função de cálculo de IMC e adicionar o resultado ao HTML.

document.getElementById("button").
addEventListener("click", () => {
Enter fullscreen mode Exit fullscreen mode

A Arrow Function serve para tornar o código mais legível,

Sem a necessidade da escrita da palavra reservada function ou o uso de um return.

Agora, com o uso dessas três variáveis, conseguimos os valores de input e selecionamos a div que vai receber o resultado final. Ela foi criada apenas com esse intuito, e está vazia.

const height = document.getElementById("input-height").value;
const weight = document.getElementById("input-weight").value;

const container = document.getElementById("bmi-result");
Enter fullscreen mode Exit fullscreen mode

Agora, vemos a variável result, que é inicializada com um valor. Ela vai receber o elemento HTML que estamos criando, através do createElement, para receber o resultado.

o textContent é o valor do H3 criado e a função a ser disparada, foi declarada fora do escopo da Arrow function, como vocês podem ver.

const result = document.createElement("h3");

result.textContent = calculateBMI(height, weight);

container.appendChild(result);


//Fora do escopo da Arrow Function
function calculateBMI(height, weight) {

    var bmi = (weight/(height*height)).toFixed(1);
    return bmi;
}
Enter fullscreen mode Exit fullscreen mode

Essa ideia é suficiente para resolver o desafio, mas não sem criar um bug um tanto engraçado

Calculadora de IMC - Bug

Cada vez que clicamos no botão, o processo repete. Então criamos uma nova Tag H3 e o resultado é novamente inserido no HTML. Isso é um bug, um mau funcionamento da lógica do nosso código, mas que se resolve com uma linha.

InnerHTML

//Remover resultado antigo
container.innerHTML = "";
Enter fullscreen mode Exit fullscreen mode

Essa linha antes da criação da tag H3, vai trocar o conteúdo da div para vazio. a InnerHTML não vai excluir a div, mas sim substituir o conteúdo. A div permanece.

Entender isso é importante porque existem funcionalidades JavaScript para excluir a div em si.

Essa única linha resolve o bug e demonstra que você, dev, de fato pensa em cada linha do seu código. Use bastante dessas dicas.


Esse é um post escrito por mim ✨❤️

E é o segundo de uma série de 4 posts sobre esse projeto. No próximo pretendo falar sobre os padrões CSS que uso.

Se você deseja adicionar algo, sugerir correção ou conversar sobre tecnologias e afins, pode me chamar no Instagram ou por e-mail no contato.elisadrumond@gmail.com

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay