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

IMC no arquivo form.js não funciona

Olá, quando eu adiciono um paciente novo, o imc não é calculado para ele. O script do calcula-imc.js também está vindo antes do form.js e não tá dando mesmo assim. Eu baixei o projeto do professor e mesmo nele isso não funciona. Já verifiquei as atualizações do Google Chrome e estou com a versão mais atualizada.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

var botaoAdicionar = document.querySelector("#adicionar-paciente");
botaoAdicionar.addEventListener("click", function(event) {
    event.preventDefault();

    var form = document.querySelector("#form-adiciona");
    var nome = form.nome.value;
    var peso = form.peso.value;
    var altura = form.altura.value;
    var gordura = 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);

});
4 respostas

veja se está tudo certo com a função calculaImc() que vc está chamando.

No código que vc postou parece estar tudo certo, mas, ele pode não estar chamando a função por alguma diferença na grafia ou a função não está certa na outra aba js.

Pois é, eu conferi isso, mas não vi nenhum erro, aqui está o código do outro .js :

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

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

var 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 pesoValido = true;
    var alturaValido = true;

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


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

    if (alturaValido && pesoValido) {
        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!

acho que encontrei! A altura está com um valor 165m.

consegue corrigir pra 1,65m?

Ahhh, obrigadaa, corrigi pra 1.65 e funcinou, esqueci que tinha que colocar a vírgula.