Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

calculadora IMC

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<title>calculo IMC</title>
<!--style-->
<style> 
 section {
      width: 50%;
      margin: 0 auto;
      }
</style>
<!--endStyle-->

<!--HTML-->
<br>
<h4 align="center">Calculando el IMC de una persona</h4> <br>

 <div class="container col-lg-6">
  <form class="form-control card">

    <div class="form-group col-lg-12">
      <label for="peso">Peso (KG):</label> <br>
      <input type="number" min="0" max="120" class="form-control" id="peso" name="peso" required>
    </div>

    <div class="form-group col-lg-12">
      <label for="altura">Altura (Cm):</label> <br>
      <input type="number" class="form-control" id="altura" name="altura" min="0" max="2.1" required>
    </div> <br>

    <button type="button" class="btn btn-success col-lg-12" id="button">Calcular</button>
  </form>

 </div> <br> <br>


 <section align="center" class="card col-lg-6">
    <div class="card-body">
      <h5 class="card-title">Indice de masa corporal</h5> <br>
      <p class="card-text">
         <ol id='imc'>

         </ol>
      </p>
    </div>
 </section>
 <!--EndHTML-->

 <!--Scripts-->
 <script type="text/javascript">

   let button = document.querySelector('#button');
   button.addEventListener('click', () => {

     //functions
     let validar_valor_imc = (imc) => {
       imc = parseFloat((peso / (altura * altura)).toFixed(2));
       let li = document.createElement('li');
       let node = document.createTextNode('el imc calculado es de: ' + imc);
       if(imc == 0){
         alert('error en los valores');
       }
       else {
         li.appendChild(node);
         ol.appendChild(li);
         imc = 0;
       }
     }  

     //variables
     let input_peso = document.querySelector('#peso').value;
     let input_altura = document.querySelector('#altura').value;
     let input_p = document.querySelector('#peso');
     let input_a = document.querySelector('#altura');
     let ol = document.querySelector('#imc');
     let peso = 0;
     let altura = 1;
     let imc = 0;

     if(input_peso.length == 0){
        input_p.classList.add('is-invalid');
        peso = 0;
     }
     else {
        input_p.classList.remove('is-invalid');
        input_p.classList.add('is-valid');

        if(parseInt(input_peso) <= 0 || parseInt(input_peso) > 120){
          alert('el peso no puede ser un numero negativo o mayor a 120 KG, el valor del peso tampoco puede ser 0');
            peso = 0;
            altura = 1;
        }
        else {
            peso = parseInt(input_peso);
          }
     }

     if(input_altura.length == 0){
        input_a.classList.add('is-invalid');
        altura = 1;
     }
     else {
        input_a.classList.remove('is-invalid');
        input_a.classList.add('is-valid');

        if(parseInt(input_altura) <= 0 || parseInt(input_altura) > 210){
          alert('la altura no puede ser negativa o ser mayor a 210 CM, el valor de la altura tampoco puede ser 0');
          peso = 0;
          altura = 1;
        }
        else {
          altura = parseFloat(input_altura/100);
        }
     }

     validar_valor_imc(imc);

   });

 </script>
 <!--EndScripts-->

<!-- Option 1: Bootstrap Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
1 respuesta

Hola, Gracias por tu participación en el foro. Sin embargo, no hace falta que publiques la respuesta a tu ejercicio aquí. Puedes hacerlo en Discord, donde hay un canal específico para eso. El foro es más bien para plantear tus dudas y ayudar a otros compañeros. Recordamos que no es obligatorio responder a ningún ejercicio en el foro, ni suman puntos o son usados como criterio para el avance en el programa. Pedimos que siempre que sea posible, por favor etiquetes tu tópico para que sea más sencillo identificar si es una duda, sugerencia, etc. ¡Deseamos que puedas cumplir con todos tus objetivos y tener éxito en tus estudios, saludos!

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