Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Haz lo que hicimos en el aula

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

2 respuestas

Hola Jhonatan, espero que estés bien.

Estamos muy felices por tu aprendizaje. Excelente tu solución, sólo te recomendamos que copie y pegue tu código aquí en el foro así podremos testarlo nosotros también. Para compartir un código, haz clic en este botón aquí y escreba tu código dentro de el:

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Continúa con tus estudios y cualquier duda estaremos aquí.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios
let pacientes = document.querySelectorAll(".paciente");
let form = document.querySelector(".form");
let btn_agregar = form.querySelector("#adicionar-paciente");
let tbody = document.querySelector("#tabla-pacientes");

btn_agregar.addEventListener("click", (e) => {
  e.preventDefault();

  let paciente = {      
       nombre : form.nombre.value,
       peso : form.peso.value,
       altura : form.altura.value,
       gordura : form.gordura.value
  }

  crearHtml(paciente);
});

function crearHtml(paciente) {

  let ul = document.querySelector("#mensajes-errores");
  ul.innerHTML = "";

  let errores = validarPacientes(paciente);
  if(errores.length > 0){
    mensajeErrores(errores);
    return;
  }


  //Creacion de elementos
  let tr = document.createElement("tr");
  tr.classList.add("paciente");
  let td_nombre = document.createElement("td");
  let td_peso = document.createElement("td");
  let td_altura = document.createElement("td");
  let td_gordura = document.createElement("td");
  let td_imc = document.createElement("td");
  //Asignacion de estilo al tr
  //Obtengo el calculo del imc
  let imc = calcular_imc(paciente.peso, paciente.altura).toFixed(2);

  //Asigno los valores a los td creados
  td_nombre.textContent = paciente.nombre;
  td_peso.textContent = paciente.peso;
  td_altura.textContent = paciente.altura;
  td_gordura.textContent = paciente.gordura;
  td_imc.textContent = imc;

  //agrego los td al tr
  tr.appendChild(td_nombre);
  tr.appendChild(td_peso);
  tr.appendChild(td_altura);
  tr.appendChild(td_gordura);
  tr.appendChild(td_imc);
  //   Se agrega el tr al tbody
  tbody.appendChild(tr);
  form.reset();
}


function obtener_imc() {
  for (let i = 0; i < pacientes.length; i++) {
    let validacion = true;
    let td_peso = pacientes[i].querySelector(".info-peso");
    let td_altura = pacientes[i].querySelector(".info-altura");
    let info_imc = pacientes[i].querySelector(".info-imc");

    let peso = parseInt(td_peso.textContent);
    let altura = parseInt(td_altura.textContent);
    let peso_valido = validar_peso(peso);
    let altura_valida = validar_altura(altura);
    if (!peso_valido) {
      info_imc.innerHTML = "Peso incorrecto";
      validacion = false;
    }

    if (!altura_valida) {
      info_imc.innerHTML = "Altura incorrecta";
      validacion = false;
    }

    if (validacion) {
      let imc = calcular_imc(peso, altura);
      info_imc.innerHTML = imc.toFixed(2);
    } else {
      pacientes[i].classList.add("paciente-incorrecto");
    }
  }
}

function calcular_imc(peso, altura) {
  return peso / (altura * altura);
}

function validar_peso(peso){
  if (peso <= 0 || peso >= 150) {
    return false;
  }
  return true;
}

function validar_altura(altura){
  if (altura <= 0 || altura >= 2.30) {
    return false;
  }
  return true;
}

function validarPacientes(paciente){
    let errores = [];
    if (paciente.peso <= 0 || paciente.peso >= 150) {
      errores.push('Peso incorrecto');
    }
    if (paciente.altura <= 0 || paciente.altura >= 3) {
      errores.push('Altura incorrecta');
    }
    if (paciente.nombre.length <= 0) {
      errores.push('Ingrese el nombre');
    }
    if (paciente.peso.length <= 0) {
      errores.push('Ingrese el peso');
    }

     if (paciente.altura.length <= 0) {
      errores.push('Ingrese la altura');
    }

     if (paciente.gordura.length <= 0) {
      errores.push('Ingrese el porcentaje de gordura');
    }

    return errores;

}

function mensajeErrores(errores){

  let ul = document.querySelector("#mensajes-errores");

  errores.forEach(error => {
    let li = document.createElement('li');
    li.textContent = error;
    ul.appendChild(li);
  });

}


obtener_imc();