1
resposta

A função Calcula IMC só retorna valores menores que ZERO; Modulo 4, Alula 2

Ao separa os Codigos e o function calculaImc (peso,altura) só retorna valores baixo de 0 ex: 0,0000232332 Como posso solucionar esse bug?

O JS está unido ainda(Não adotei as boas práticas porque achei que isso estaria atrapalhando) então o código esta em um único arquivo

JAVASCRIPIT

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

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

    var paciente = pacientes[i];

    //  CAPITURANDO PESO
    var tdPeso = paciente.querySelector('.info-peso');
    var peso = tdPeso.textContent;

    //  CAPITURANDO ALTURA

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

    //  Capturando campo do IMC
    var valorImc = paciente.querySelector('.info-imc');

    //  Peso e Altura sao verdadeiros
    var pesoValido = true;
    var alturaValida = true;

    // condição para delimitar peso
    if(peso <=0 || peso >= 200){
        pesoValido = false;
        valorImc.textContent = 'Valor inválido';
        valorImc.setAttribute('class','invalido');
        tdPeso.setAttribute('class','invalido');
    }
    // consição para delimitar Altura
    if(altura <= 0 || altura >= 3.00){
        alturaValida = false;
        valorImc.textContent = 'Valor inválido';
        valorImc.setAttribute('class','invalido');
        tdAltura.setAttribute('class','invalido')
    }

    // Condição para Implementar código
    if(alturaValida && pesoValido){
        var imc = calcularImc(peso,altura);
        valorImc.setAttribute('class','valido');
        valorImc.textContent = imc;
    }
}

Função para calcular imc

function calcularImc(peso,altura){
    var imc = 0;

    imc = peso/(altura*altura);
    return imc.toFixed(2);
}
// Modulo 04
// Capiturando elemento Botao
var btn = document.querySelector('#adicionar-paciente');
// Escutando Evento
btn.addEventListener('click', function(){
    event.preventDefault(); //função que previne o comportamento padrão do Botão

    // Capiturando formulario de e seus Dados
    var form = document.querySelector('#formulario'); 
    var nome = form.nome.value;
    var peso = form.peso.value;
    var altura = form.altura.value;
    var gordura = form.gordura.value;

    // Criando Uma nova linha TR
    var pacienteTr = document.createElement('tr');
    // Criando novas colunas TD da linha 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');

    // Setando Valores capiturados nas Td
    nomeTd.textContent = nome;
    pesoTd.textContent = peso;
    alturaTd.textContent = altura;
    gorduraTd.textContent = gordura;
    imcTd.textContent = calcularImc(peso,altura);

    console.log(peso,altura,imcTd);


    // Setando todos os TD dentro da TR pacienteTr
    pacienteTr.appendChild(nomeTd);
    pacienteTr.appendChild(pesoTd);
    pacienteTr.appendChild(alturaTd);
    pacienteTr.appendChild(gorduraTd);
    pacienteTr.appendChild(imcTd);


    // Capiturando tabela || setando o TR na tabela
    var tabela = document.querySelector('#tabela-pacientes');
    tabela.appendChild(pacienteTr);

});

1 resposta

Oi Francisco tudo bem?

Altura nesse caso está em metros. Então por exemplo para calcular meu IMC eu colocaria:

calcularImc(85,1.73)

Resultando 28.4 que é o meu IMC mesmo.

Espero ter ajudado!!!