Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

O IMC do Formulário só retorna 0

Calcula IMC

var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";

var pacientes = document.querySelectorAll(".paciente");

for (var i = 0; i < pacientes.length; i++) {

  paciente = pacientes[i];

  var tdPeso = paciente.querySelector(".info-peso");
  var peso = tdPeso.textContent;

  var tdAltura = paciente.querySelector(".info-altura");
  var altura = tdAltura.textContent;

  var tdImc = paciente.querySelector(".info-imc");

  var pesoEhValido = true;
  var alturaEhValida = true;

  if (peso <= 0 || peso >= 1000) {
      console.log("Peso inválido!");
      pesoEhValido = false;
      tdImc.textContent = "Peso inválido";
      paciente.classList.add("paciente-invalido");
  }

  if (altura <= 0 || altura >= 3.00) {
      console.log("Altura inválida!");
      alturaEhValida = false;
      tdImc.textContent = "Altura inválida";
      paciente.classList.add("paciente-invalido");
  }

  if (pesoEhValido && alturaEhValida) {
      var imc = calculaImc(peso, altura);
      tdImc.textContent = imc;
  }

}

function calculaImc(peso, altura){
  var imc = peso / (altura * altura);
  return imc.toFixed(2);

}

Form.js

var botao = document.querySelector('#adicionar-paciente');
botao.addEventListener('click', function(e){
  e.preventDefault()

  var form = document.querySelector('#form-adiciona');

  var nome = form.nome.value;
  var peso = form.peso.value;
  var altura = parseFloat(form.altura.value);
  var gordura = parseFloat(form.gordura.value);

  var pacienteTr = document.createElement('tr');

  var nomeTd = document.createElement('td');
  var pesoTd = document.createElement('td');
  var alturaTd = document.createElement('td');
  var gorduraTd = document.createElement('td');
  var imcTd = document.createElement('td');

  nomeTd.textContent = nome
  pesoTd.textContent = peso
  alturaTd.textContent = altura
  gorduraTd.textContent = gordura
  imcTd.textContent = calculaImc(peso, altura);

  pacienteTr.appendChild(nomeTd)
  pacienteTr.appendChild(pesoTd)
  pacienteTr.appendChild(alturaTd)
  pacienteTr.appendChild(gorduraTd)
  pacienteTr.appendChild(imcTd)

  var tabela = document.querySelector("#tabela-pacientes")

  tabela.appendChild(pacienteTr)

  console.log(pacienteTr);
})
5 respostas

Oi Felipe tudo bem?

Preciso ver o html também para ver se não há nenhum erro nele. Mas já que vai colocar o html, poderia por o projeto no github por gentileza. Assim fica mais fácil de analisar.

Coloquei no codepen pra ser mais rápido

https://codepen.io/felipe-rodolfo/pen/RdbWKo

Estranho, testei no codepen com meus dados :

André 85 1.73 20

a gordura eu chutei kkkkk

E retornou o IMC de 28.40

Como está inserindo os dados?

Estava inserindo a altura sem o ponto, esse é o produto.

solução!

É porque a altura é em metros como diz no cabeçalho da coluna Altura(m) .

Espero ter ajudado e bons estudos!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software