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

Erro ao inserir o cálculo do imc (NaN)

Ao fazer as modificações propostas nesta parte da aula aparece no console "imc: NaN" - apesar de realizar o cálculo e apresentá-lo na tabela. Porém não consigo localizar o erro! Alguém poderia ajudar?

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

    botaoAdicionar.addEventListener("click", function (event) {
        event.preventDefault();

        var form = document.querySelector("#form-adiciona");
        //Extraindo informações do paciente do form


         var paciente = obtemPacienteDoFormulario(form);
         console.log(paciente);

        //cria a tr e td do paciente
        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);

        //adicionando o paciente na tabela
        var tabela = document.querySelector("#tabela-pacientes");

        tabela.appendChild(pacienteTr);



    }) ;

    function obtemPacienteDoFormulario (form) {

        var paciente = {

            nome: form.nome.value,
            peso: form.peso.value,
            altura: form.altura.value,
            gordura: form.gordura.value,
            imc: calculaImc (form.peso.value,form.altura.value) 

        };

        return paciente;
    }
3 respostas

Oi, seria bom vc mostrar também o código da função calculaImc...

Verdade, Artemise! Obrigada! Vou inserir.

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

    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 alturaEhValida = true;
        var pesoEhValido = 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(alturaEhValida && pesoEhValido) {

        var imc = calculaImc(peso,altura);
        tdImc.textContent= imc;

        }

    }

function calculaImc(peso,altura) {

    var imc = 0;

    imc = peso/(altura*altura);
    return imc.toFixed(2);

}
solução!

Descobri onde errei. Estava preenchendo o campo de altura usando vírgula ao invés de ponto!