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

validaPaciente???

Galera estou com um problema com a função validaPaciente, fiz tudo do jeito que o instrutor pediu, mas quando cadastro um paciente com o peso negativo o paciente é incluido e ainda mais o cadastro limpa como se o return que coloquei nao servisse e o bloco continuasse. Alguém ajuda ai.

5 respostas

Boa tarde, Felipe! Como vai?

Manda aqui o seu código HTML e JS completo pra eu dar uma olhada! Daí poderei te ajudar!

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

    var form = document.querySelector("#form-adiciona");
    var paciente = obterPacienteDoFormulario(form);
    var pacienteTr = montarTr(paciente);

    if(!validaPaciente(paciente)){

        console.log("paciente invalido");

        return;    
    }

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

        tabela.appendChild(pacienteTr);

        form.reset();
});

    function obterPacienteDoFormulario(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 montarTr(paciente){
        var pacienteTr = document.createElement("tr");
        pacienteTr.classList.add("paciente");


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

        return pacienteTr;

    }

    function montarTd(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;
        }
    }

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

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

for(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);
var alturaEhValido = validaAltura(altura);

if(!pesoEhValido){
    console.log("Peso invalido!");
    pesoEhValido = false;
    tdImc.textContent = "Peso invalido!";
    paciente.classList.add("paciente-invalido");
}
if(!alturaEhValido){
    console.log("Altura invalida!");
    alturaEhValido = false;
    tdImc.textContent = "Altura invalida!";
    paciente.classList.add("paciente-invalido");
}

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

}

function validaPeso(paciente){
    if(peso >= 0 && peso < 500){
        return true;
    }else{
        return false;
    }
}

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

function calculaImc(peso, altura){
    var imc = 0;
    imc = peso / (altura * altura);
    return imc.toFixed(2);
}
solução!

Boa noite, Felipe! Como vai?

O problema está no trecho de código a seguir:

function validaPeso(paciente){
    if(peso >= 0 && peso < 500){
        return true;
    }else{
        return false;
    }
}

Repare que vc está recebendo um parâmetro chamado paciente mas utilizando uma variável inexistente chamada peso dentro da função. O correto seria fazer:

function validaPeso(peso){
    if(peso >= 0 && peso < 500){
        return true;
    }else{
        return false;
    }
}

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Era isso mesmo, Obrigado Gabriel Leite, Valeu Fessor

Por nada, Felipe! Sempre que tiver qualquer dúvida é só mandar aqui no fórum!

Grande abraço e bons estudos, meu aluno!