4
respostas

Problemas para chamar funções em outros arquivos do projeto

Estou com um problema em relação ao projeto, sobre calcular o imc e adicionar o paciente na tabela. Estou seguindo passo a passo das aulas, mas não estou entendendo bem aonde exatamente estou errando. Basicamente, no arquivo form.js, toda vez que rodo ele no navegador, ele me retorna um erro de que a função "calculaIMC", feita no arquivo "calcula-imc.js", não pode ser executada pois ela não foi definida. Esse erro só acontece assim que eu a chamo no arquivo "form.js", se eu não a declaro nesse arquivo, ela a executa normalmente e adiciona os pacientes na tabela. Já tentei colocar o "type= module" nos e também declarar no topo de "form.js" essa função de forma completa, mas não funciona. O que será que pode ser ?

Segue o código JavaScript de calcula-imc:
var titulo = document.querySelector(".titulo");
titulo.textContent = "Aparecida Nutricionista";

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

for(let 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 pesoEhValido = validaPeso(peso); // true ou false
    var alturaEhValida = validaAltura(altura); // true ou false

    if(!pesoEhValido){
        console.log("peso inválido");
        pesoEhValido = false;
        tdIMC.textContent ="Peso Inválido!"
        // paciente.style.backgroundColor= "lightcoral;"
        paciente.classList.add('paciente-invalido');
    }

    if (!alturaEhValida){
        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 validaPeso(peso){
    if(peso >= 0 && peso < 1000){
        return true
    } else{
        return false
    }
}

function validaAltura(altura){
    if(altura >= 0 && altura <= 3.0){
        return true
    }else{
        return false
    }
}

    function calculaIMC(peso, altura){

    var imc = 0;

    imc =  peso / (altura * altura);

    return imc.toFixed(2);
}
4 respostas

Agora o do Form.js:

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

    var form = document.querySelector("#form-adiciona");
    var paciente = obtemPacientedoFormulario(form);

    var pacienteTr = montaTr(paciente);

    if(!validaPaciente(paciente)){
        console.log("Paciente inválido");
        return; //return fazio vai sair fa função e n irá adicionar o paciente na tabela
    }


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

    form.reset();

});

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 validaPaciente(paciente){
    if(validaPeso(paciente.peso)){
        return true;
    }else{
        return false;
    }
}

Fala Pasquale, tudo bem? Espero que sim!

Poderia mandar o código compactado, por favor? Assim consigo analisar melhor o seu contexto e te dar uma solução. Sugiro upar o projeto compactado no drive, mega ou mediafire! Lembre-se de disponibilizar o link como público.

Aguardo o retorno!

Boa noite Mateus! Claro, segue aqui abaixo:

https://drive.google.com/file/d/1z2qHaezJyYlAKCfVCiR64GHVDqMDN6_j/view?usp=sharing

ps: eu consegui resolver o problema mudando a descrição de "type" do meu

Boa! Que ótimo que conseguiu resolver!

Qualquer outra dúvida pode contar com a gente aqui no fórum ta bom?

Abraços e bons estudos :D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software