Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

imc nao calcula

FORM.JS{

var botao = document.querySelector("#adicionar-paciente");


botao.addEventListener("click", function()
{
    event.preventDefault();//previne comportamento padrao do html
    var form = document.querySelector("#form");
    var paciente = criandoform(form);
    var pacienteTR = criandotr();


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

form.reset();
  function criandoform(form){

var paciente =
 {
    nome: form.nome.value,
    peso: form.peso.value,
    altura: form.altura.value,
    gordura: form.gordura.value,
    imc: calcimc(form.peso.value, form.altura.value)
  }
  return paciente;
  }

function criandotr()
{
   var pacienteTR = document.createElement("tr");
   pacienteTR.classList.add("paciente");

   pacienteTR.appendChild(criandotd(paciente.nome, "info-nome"));
   pacienteTR.appendChild(criandotd(paciente.peso, "info-peso"));
   pacienteTR.appendChild(criandotd(paciente.altura, "info-altura"));
   pacienteTR.appendChild(criandotd(paciente.gordura, "info-gordura"));
   pacienteTR.appendChild(criandotd(paciente.imc, "info-imc"));

return pacienteTR;
}

function criandotd(dado, classe)
{
var td=document.createElement("td");
td.textContent = dado;
td.classList.add(classe)
return td;
}
});
}  

CALULAIMC.JS{

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

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

  var 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 evalido1 = true, evalido2=true;
  if(peso <=0 || peso >=1000){
   tdimc.textContent = "peso invalido";
   paciente.style.backgroundColor = "red";
   evalido1 = false
  }
  if(altura <=0 || altura >=3.00){
   tdimc.textContent = "peso invalido";
   paciente.style.backgroundColor = "red";
   evalido2 = false
  }
  if(evalido1 && evalido2){
  var imc = calcimc(peso,altura);
   tdimc.textContent = imc;
 }
}
function calcimc(peso, altura){
 var imc=0;
 imc= peso / (altura*altura);
 return imc.toFixed(2);

}}

o imc sempre fica com o valor "NAN"

1 resposta
solução!

Lucas, nessa função criandoTd parece que está faltando passar paciente.

Está assim:

function criandotr() {
   var pacienteTR = document.createElement("tr");
   pacienteTR.classList.add("paciente");

   pacienteTR.appendChild(criandotd(paciente.nome, "info-nome"));
   pacienteTR.appendChild(criandotd(paciente.peso, "info-peso"));
   pacienteTR.appendChild(criandotd(paciente.altura, "info-altura"));
   pacienteTR.appendChild(criandotd(paciente.gordura, "info-gordura"));
   pacienteTR.appendChild(criandotd(paciente.imc, "info-imc"));

return pacienteTR;
}

Precisaria ser chamada dessa forma:

function criandotr(paciente) {
...
}