3
respostas

funcao.js

Criei um novo JS para receber todas as funções, porém a função do "calcula-imc" da esse erro no console "calcula_imc.js:37 Uncaught ReferenceError: calculaImc is not defined at calcula_imc.js:37. ". Somente a função calcular da esse problema

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;
}

function montaTr(paciente){

    var pacienteTr = document.createElement("tr");
    pacienteTr.classList.add("paciente");

    pacienteTr.appendChild(montaTd(paciente.nome,"info-nome"));
    pacienteTr.appendChild(montaTd(paciente.peso,"info-peso"));
    pacienteTr.appendChild(montaTd(paciente.altura,"info-altura"));
    pacienteTr.appendChild(montaTd(paciente.gordura,"info-gordura"));
    pacienteTr.appendChild(montaTd(paciente.imc,"info-imc"));    

    return pacienteTr;
}

function montaTd(dado,classe){

    var td = document.createElement("td");

    td.textContent = dado;
    td.classList.add(classe);

    return td;

}    
function calculaImc(peso,altura){
    var imc = 0;
    imc = peso / (altura * altura);
    return imc.toFixed(2); //limita o valor de imc em 2 casas decimais 


}

//codigo calcula imc

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

Thiago, tudo bem? Seu código não tem erro nele. Mas a execução do hoisting no Javascript pode parar se ele tiver outro erro no arquivo

Se sua função está na linha 37, mas nas primeiras linhas voc~e teve um erro, o arquivo para de carregar.

Abre sua página de novo e abre o console do navegador sem executar nenhum cálculo no seu programa pra ver se ele descobre algum erro ao carregar o arquivo

O problema estava no arquivo de html, na ordem de importação do .js. Coloquei a funcao.js por último, sendo que necessita importar o funcao.js primeiro, já que utilizamos nos demais js.

Entendi! Que bom que resolveu!