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

No corre mi código correctamente

Traté de hacer mi propio código antes de que el profesor lo resolviera. Sí corre sin errores pero si escribo una altura y un peso incorrecto en el listado solo me muestra el error del peso mas no en el listado, alguien me ayuda a saber qué pasa? Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

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

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

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

    //validar datos
    var pacienteValido = validarPaciente(paciente);
    if (!pacienteValido) {
        return;
    }

    var pacienteTr = construirTr(paciente);
    var tabla = document.querySelector("#tabla-pacientes");
    tabla.appendChild(pacienteTr);
    form.reset();

});

function capturarDatosPaciente(form) {
    //Capturar los datos del paciente

    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) {
    // Crear tds en tabla
    var pacienteTr = document.createElement("tr");
    var nombreTd = construirTd("info-nombre", paciente.nombre);
    var pesoTd = construirTd("info-peso", paciente.peso);
    var alturaTd = construirTd("info-altura", paciente.altura);
    var gorduraTd = construirTd("info-gordura", paciente.gordura);
    var imcTd = construirTd("info-imc", paciente.imc);

    pacienteTr.appendChild(nombreTd);
    pacienteTr.appendChild(pesoTd);
    pacienteTr.appendChild(alturaTd);
    pacienteTr.appendChild(gorduraTd);
    pacienteTr.appendChild(imcTd);

    return pacienteTr;
}

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

    return td;
}

function validarPaciente(paciente) {
    var listaErrores = document.querySelector("#errores");

    if (!validarAltura(paciente.altura)) {
        li = document.createElement("li");
        li.textContent = "Altura Incorrecta";
        listaErrores.appendChild(li);
        console.log(li);
        return false;
    }
    if (!validarPeso(paciente.peso)) {
        li = document.createElement("li");
        li1.textContent = "Peso Incorrecto";
        listaErrores.appendChild(li);
        return false;
    }

    if (validarPeso(paciente.peso) && validarAltura(paciente.altura)) {
        return true;
    }
}
4 respuestas
solución!

Hola, en la pantalla sólo va a aparecer el último valor que lee, entonces aunque pongas la altura y el peso incorrectos, si en la función ponés primero la altura y después el peso sólo va a mostrar el peso.

Hola gente. Lo que marca Eliana es correcto. Pues si sigues con las aulas siguientes el tema se trata mas en detalle y veras como corregirlo. Saludos.

Exacto Lista Cristian Raul; más adelante hacemos una validación de datos más completa.

Gracias chicxs!, sin embargo sigo un poco con la duda porque estoy creando un tr para cada uno, es lo que me parece extraño,