Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

No entiendo porqué razón no valida el paciente incorrecto mi código

Buenas noches, una pregunta, no entiendo porqué razón no valida el paciente incorrecto mi código javascript si no tiene errores... Lo adjunto aquí el contenido del archivo calcular-imc.js:

var botonAdicionar = document.querySelector("#adicionar-paciente");

botonAdicionar.addEventListener("click",function(event){
    event.preventDefault();

    var form = document.querySelector("#form-adicionar");
    var paciente = capturarDatosPaciente(form);
    var pacienteTr = construirTr(paciente);

    if(!validarPaciente(paciente)){
        console.log("Paciente incorrecto");
        return;
    }
    // validarPaciente 
    var tabla = document.querySelector("#tabla-pacientes");
    tabla.appendChild(pacienteTr);
    form.reset();

});
function capturarDatosPaciente(form){
    //capturando los datos del formulario
    var paciente = {
        nombre: form.nombre.value,
        peso: form.peso.value,
        altura: form.altura.value,
        gordura:form.gordura.value,
        imc: calcularIMC(form.peso.value,form.altura.value)
    }
    return paciente;
}

function construirTr(paciente){

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

        pacienteTr.appendChild(construirTd(paciente.nombre,"info-nombre"));
        pacienteTr.appendChild(construirTd(paciente.peso,"info-peso"));
        pacienteTr.appendChild(construirTd(paciente.altura,"info-altura"));
        pacienteTr.appendChild(construirTd(paciente.gordura,"info-gordura"));
        pacienteTr.appendChild(construirTd(paciente.imc,"info-imc"));

        return pacienteTr;
}

function construirTd(dato,clase){
    var td = document.createElement("td");
    td.classList.add(clase);
    td.textContent = dato;
    return td;
}

function validarPaciente(paciente){
    if(validarPeso(paciente.peso)){
        return true;
    }else{
        return false;
    }

}

O sea, crea el nuevo paciente "Alfredo" pero no dice paciente incorrecto en la consola al colocar un peso negativo de -58...

2 respuestas
solución!

Hola compañero! ¿Cómo estás? Revisando tu código, noto que en la condición de tu función validarPaciente() no estás ingresando los argumentos correctos. Para que un paciente sea incorrecto, el peso o la altura deben reunir ciertas condiciones. Dichas condiciones deben estar claramente especificadas. Te pongo un ejemplo:

function validarPeso(peso) {
    if (peso>=0&&peso<500){
        return true;
    } else{
        return false;
    }
}
function validarAltura(altura) {
    if (altura<3&&altura>=0){
        return true;
    } else{
        return false;
    }
}

Como ves, si se cumplen alguna de estas condiciones, alturaValida o pesoValido pasarían a ser "false", y por lo tanto el paciente sería incorrecto. ¿Te sirve la respuesta?

Buenos días, compañero, muchas gracias. El problema lo tenía en mi archivo calcular-imc.js en la línea 44 donde le pasaba como parametro la altura a la funcion validarPeso() pero ya funcionó. Muchas gracias:

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

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