Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não estou conseguindo validar após o evento do click. No console aparece que validaPaciente não eh uma função.



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

    var pacientes = document.querySelectorAll(".paciente");
    var botao = document.querySelector("#adicionar-paciente");



function calculaImc(peso,altura){

        var imc = 0;
        imc = peso / (altura * altura);      
        return imc.toFixed(2);

}

function pegaDadosPaciente(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 criaTd(conteudo,classe){

    var td = document.createElement("td");
    td.textContent = conteudo  
    td.classList.add(classe);
    return td;
}

function criaTr(paciente){

        var formTr = document.createElement("tr");
        formTr.classList.add("paciente")
        var nomeTd = criaTd(paciente.nome,"info-nome");
        var pesoTd = criaTd(paciente.peso,"info-peso");
        var alturaTd = criaTd(paciente.altura,"info-altura");
        var gorduraTd = criaTd(paciente.gordura,"info-gordura");
        var tdImc = criaTd(paciente.imc,"info-imc");

        formTr.appendChild(nomeTd); 
        formTr.appendChild(pesoTd);
        formTr.appendChild(alturaTd);
        formTr.appendChild(gorduraTd);
        formTr.appendChild(tdImc);

        console.log(nome); 
        console.log(peso);  
        console.log(altura);  
        console.log(gordura);   


        return formTr;
}

function validaPeso(peso) {

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

    if(altura > 0 && altura <= 3){
        return true;
    }else{
        return false;
    }    
}

function validaPaciente(paciente){

    if(!validaPeso(paciente.peso)){
        return false
    }

}


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

             var    paciente = pacientes[i];       

             var peso = paciente.querySelector(".info-peso").textContent;
            peso = parseFloat(peso);
            var altura = paciente.querySelector(".info-altura").textContent ;
             altura = parseFloat(altura);
             var tdImc = paciente.querySelector(".info-imc");

             var pesoValido = validaPeso(peso);
             var alturaValida = validaAltura(altura);


         if(!pesoValido){

             tdImc.textContent = ("Peso invalido");
             paciente.classList.add("invalido") ;
         }
             if (!alturaValida){

                 tdImc.textContent = ("altura invalida")
                 paciente.classList.add("invalido")
             }

                 if (alturaValida && pesoValido ){


                    var imc = calculaImc(peso,altura);      
                    tdImc.textContent = imc


                 }

        }






    botao.addEventListener("click",function(event){

        event.preventDefault();

        var form = document.querySelector(".formulario");
        var paciente = pegaDadosPaciente(form);
        var formTr = criaTr(paciente);


        if (!validaPaciente(paciente)){
            return
        };

        var tabela = document.querySelector("#tabela-pacientes")
        tabela.appendChild(formTr)
        form.reset();


    });
1 resposta
solução!

Oi, Arthur, tudo bem?

A sua função validaPaciente está vazia, está sem retorno:

if (!validaPaciente(paciente)){
            return
        };

Teríamos que ter a validação de pese e de altura, um exemplo:

function validaPaciente(paciente) {
    if (validaPeso(paciente.peso) && validaAltura(paciente.altura)) {
        return true;
    } else {
        return false;
    }
}

Testa e me fala se o erro continua :}