Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

Código con Validación de nuevos pacientes

Comparto como solucioné la validación de los nuevos pacientes agregados.

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

    var form = document.querySelector("#form-adicionar");
    var tabla = document.querySelector("#tabla-pacientes");

    //capturando valores del formulario
    var nombre = form.nombre.value;
    var peso = form.peso.value;
    var altura = form.altura.value;
    var gordura = form.gordura.value;
    //Creando nuevos tr y td
    var pacienteTr = document.createElement("tr");
    var nombreTd = document.createElement("td");
    var pesoTd = document.createElement("td");
    var alturaTd = document.createElement("td");
    var gorduraTd = document.createElement("td");
    var imcTd = document.createElement("td");
    //añadiendoles las clases correspondientes
    pacienteTr.classList.add("paciente");
    nombreTd.classList.add("info-nombre");
    pesoTd.classList.add("info-peso");
    alturaTd.classList.add("info-altura");
    gorduraTd.classList.add("info-gordura");
    imcTd.classList.add("info-imc");
    //Asignando los valores capturados desde el formulario
    nombreTd.textContent = nombre;
    pesoTd.textContent = peso;
    alturaTd.textContent = altura;
    gorduraTd.textContent = gordura;
    //ligando los td al tr(pacienteTr)
    pacienteTr.appendChild(nombreTd);
    pacienteTr.appendChild(pesoTd);
    pacienteTr.appendChild(alturaTd);
    pacienteTr.appendChild(gorduraTd);
    pacienteTr.appendChild(imcTd);
    //ligando(añadiendo) pacienteTr a la Tabla    
    tabla.appendChild(pacienteTr);
    console.log(pacienteTr);

    calcularImc();//<--------Valido y calculo IMC con esta función   


});

function calcularImc(){

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

    for(var 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 imc = 0;

        var pesoEsValido = true;
        var alturaEsValida = true;

        if( peso < 0 || peso > 1000){
            console.log("Peso incorrecto");
            pesoEsValido = false;
        }

        if( altura < 0 || altura > 3.00){
            console.log("Altura incorrecta");
            alturaEsValida = false;
        }

        if(pesoEsValido && alturaEsValida){
            imc = peso/  altura**2;
            tdIMC.textContent = imc.toFixed(2);
            console.log("los parametros son normales no hay problema IMC correcto");
        } 
        else{

            if(pesoEsValido==false && alturaEsValida==false){
                tdIMC.textContent = "Peso y Altura Incorrectos";
                paciente.classList.add("paciente-incorrecto");
                console.log("Peso y Altura Incorrectos");      
            }       
            else{   
                console.log("Hay un problema");              
                if(pesoEsValido == false){
                    tdIMC.textContent = "Peso Incorrecto";
                    paciente.classList.add("paciente-incorrecto");
                    console.log("Tu peso está fuera de los parámetros normales");
                }
                if(alturaEsValida == false){
                    tdIMC.textContent = "Altura Incorrecta";
                    //paciente.style.backgroundColor = "lightcoral";//<--------------metodo que modifica los estilos desde el javaScript. No es recomendado, se recomienda usar el metodo de abajo
                    paciente.classList.add("paciente-incorrecto");
                    console.log("Tu altura está fuera de los parámetros normales");

                }


            }


        }            



    }


}

1 respuesta
solución!

Hola David , espero que estés muy bien.

Felicitaciones por tu aprendizaje. Estamos priorizando el foro para postear dudas, así optimizamos el tiempo de respuesta para ustedes.

Para no dejar de compartir los códigos, actividades y ejercicios que realizas, creamos un canal en Discord (#compartatucodigo) donde puedes compartirlos, dar y sugerir mejoras con el resto de tus compañeros.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios