Else if, javascript

Iniciado por jcbaniela, 11 Abril 2013, 12:08 PM

0 Miembros y 1 Visitante están viendo este tema.

jcbaniela

Buenos días,

soy un muy iniciado en este tema de programación en javascript, e intentando hacer un par de aplicacioncillas me has surgido un par de problemas.
En el primer código que os dejo, para calcular el IMC y visualizar en funcion de ese resultado un comentario recomendatorio, en principio los cálculos los realiza correctamente pero las condiciones no las tiene en cuenta y siempre muestra la misma.
<!DOCTYPE html>
<html>
<body>

<p>C&aacute;lculo del IMC </p>
<p>Para determinar si una persona está por encima de su peso ideal o es demasiado delgada se utiliza el IMC o Índice de Masa Corporal, también conocido como BMI (Body Mass Index) o IQ (Índice de Quetelet). Completa los datos y comprueba si necesitas adelgazar.</p>
<p>Peso (Kg): <input id="peso" value="80" /></p>
<p>Talla (m): <input id="talla" value="1.85" /></p>
<button onClick="imc();recomendacion();">IMC</button>

<p id="demo"></p>
<p id="imc"></p>

<script>
function imc()
{
var z=parseFloat(document.getElementById("talla").value);
var y=parseFloat(document.getElementById("talla").value);
var t=parseFloat(document.getElementById("peso").value);
var x=parseFloat(z*y).toFixed(2);
var v=parseFloat(t/x).toFixed(1);
document.getElementById("demo").innerHTML=v;
}
</script>

<script>
function recomendacion()
{
var b="";
var c=parseFloat(document.getElementById("demo"));
if (c > 40.0)
  {
  b="OBESIDAD GRAVE. Una obesidad en grado tan elevado supone un gran riesgo para la salud y requiere un inmediato control médico. Le hace falta perder entre el 20% y el 30% de su peso, pero incluso una pequeña reducción de peso puede ayudar a mejorar el riesgo de enfermedad cardiovascular y mejorar el estado de salud general. El médico es el único que puede establecer un tratamiento para adelgazar y el posible conveniencia de un tratamiento farmacológico, quirúrgico, etc."; break;
  }
else if (c < 20.0)
  {
  b="DESNUTRICIÓN. Teniendo en cuenta su estatura, su peso es insuficiente. Debería ir al médico para ver si hay alguna razón para estar ten delgado, sobre todo si el cambio de peso es reciente. Le conviene engordar un poco. A veces, es suficiente con aumentar el consumo de alimentos ricos en calorías como frutos secos, añadir mayonesa o salsas a los platos. tomar quesos curados y premiarse de vez en cuando con un dulce o un helado. Aunque siempre debe hacerse con control y bajo el seguimiento de un experto a ser posible."; break;
  }
else if (c > 20.0 &&  c< 25.0)
  {
  b="NORMALIDAD. No está justificado que quiera adelgazar. En todo caso, si no está conforme con su peso, aumente un poco su actividad física y cuide su alimentación tomando una dieta variada y con abundancia de fruta y verdura."; break;
  }
else if (c > 25.0 && c < 30.0)
  {
  b="SOBREPESO. Usted necesita adelgazar. Y, sobre todo, debe procurar no engordar más para no evolucionar hacia la obesidad. Con el sobrepeso que ahora presenta empieza a haber asociado cierto riesto de aumento de algunas enfermedades cardiovasculares, especialmente si la acumulación de peso se produce alrededor de la cintura, más que si es en las caderas. Le aconsejamos que consulte a un nutricionista. Si sigue el régimen hipocalórico que le proponga y realiza actividad física de forma regular, en unos 6 meses perderá peso y se encontrará mejor."; break;
  }
else (c > 30.0 && c < 40.0)
  {
  b="OBESIDAD. A partir de un IMC de 30, existe riesgo cardiovascular y de otras enfermedades, además de fatiga, sobrecarga de articulaciones, etc. Necesita acudir a un dietista o nutricionista para adelgazar al menos un 10% de su peso en unos 6 meses; no intente adelgazar por su cuenta."; break;
  }
document.getElementById("imc").innerHTML=b;
}
</script>


</body>
</html>


Anotación: lo he probado sin el break; y tampoco funciona.

En este segundo código se calcula el Metabolismo Basal, dependiendo de si se es Hombre o Mujer. Si no le pongo esa condición y le digo que me de el resultado poniendo directamente la fórmula hace los cálculos correctamente, pero tal y como aquí os lo dejo no me muestra nada.
<!DOCTYPE html>
<html>
<body>

<p>Cálculo del Metabolismo Basal (Harris Benedict)</p>
<p>El metabolismo basal o consumo energético en reposo es la energía necesaria para mantener las actividades corporales indispensables para la vida; como son las respiración, la circulación sanguínea, el mantenimiento de la temperatura corporal, la energía necesaria para el sistema nervioso, etc. Rellena las casillas correspondientes y calcula tu metabolismo basal.</p>
<p>Sexo: <input id="sexo" value="" /> M o F</p>
<p>Peso (Kg): <input id="peso" value="80" /></p>
<p>Talla (m): <input id="talla" value="1.85" /></p>
<p>Edad: <input id="edad" value="" /></p>
<button onClick="resultado()">Resultado</button>

<p id="demo"></p>Kcal

<script>
function resultado()
{
var z=parseFloat(document.getElementById("sexo").value);
var y=parseFloat(document.getElementById("talla").value);
var t=parseFloat(document.getElementById("peso").value);
var p=parseFloat(document.getElementById("edad").value);
var a=66.473;
var b=13.752;
var c=b*t;
var d=5.0033;
var e=100;
var f=y*e;
var g=d*f;
var h=6.755;
var i=h*p;
var j=655.0955;
var k=9.563;
var l=k*t;
var m=1.8496;
var o=m*f;
var q=4.6756;
var r=q*p;
var s=parseFloat(a+c+g-i).toFixed(0);
var u=parseFloat(j+l+o+r).toFixed(0);
var v=;
if (z=M)
  {
  v=s;
  }
else
  {
  v=u;
  }
document.getElementById("demo").innerHTML=v;
}
</script>

</body>
</html>


No se si es un fallo en el planteamiento de las aplicaciones o si son ciertos fallos de los que no soy capaz de darme cuenta. Muchas gracias a todos.

Phantasy

Te contesto para el primer ejemplo, el segundo ahora lo mirare.


A ver, se nota que si que acabas de empezar en este mundo de JS. Tienes que mirar las cosas en la forma lo mas facil posible y no tan emberresado.

Incluso los 2 cambios que he hecho no son necesarios se puede simplicar aun mas, pero por no cambiar mucho tu codigo lo he dejado asi.

Te doy un consejo, utiliza en JS mucho el parametro ALERT(); ayuda en millones de casos.

<!DOCTYPE html>
<html>
<body>

<p>C&aacute;lculo del IMC </p>
<p>Para determinar si una persona está por encima de su peso ideal o es demasiado delgada se utiliza el IMC o Índice de Masa Corporal, también conocido como BMI (Body Mass Index) o IQ (Índice de Quetelet). Completa los datos y comprueba si necesitas adelgazar.</p>
<p>Peso (Kg): <input id="peso" value="80" /></p>
<p>Talla (m): <input id="talla" value="1.85" /></p>
<button onClick="imc();recomendacion();">IMC</button>

<p id="demo"></p>
<p id="imc"></p>

<script>
var v = 0;
function imc()
{
var z=parseFloat(document.getElementById("talla").value);
var y=parseFloat(document.getElementById("talla").value);
var t=parseFloat(document.getElementById("peso").value);
var x=parseFloat(z*y).toFixed(2);
v=parseFloat(t/x).toFixed(1);
document.getElementById("demo").innerHTML=v;
}
</script>

<script>
function recomendacion()
{
var b="";
var c=v;
if (c > 40.0)
  {
  b="OBESIDAD GRAVE. Una obesidad en grado tan elevado supone un gran riesgo para la salud y requiere un inmediato control médico. Le hace falta perder entre el 20% y el 30% de su peso, pero incluso una pequeña reducción de peso puede ayudar a mejorar el riesgo de enfermedad cardiovascular y mejorar el estado de salud general. El médico es el único que puede establecer un tratamiento para adelgazar y el posible conveniencia de un tratamiento farmacológico, quirúrgico, etc.";
  }
if (c < 20.0)
  {
  b="DESNUTRICIÓN. Teniendo en cuenta su estatura, su peso es insuficiente. Debería ir al médico para ver si hay alguna razón para estar ten delgado, sobre todo si el cambio de peso es reciente. Le conviene engordar un poco. A veces, es suficiente con aumentar el consumo de alimentos ricos en calorías como frutos secos, añadir mayonesa o salsas a los platos. tomar quesos curados y premiarse de vez en cuando con un dulce o un helado. Aunque siempre debe hacerse con control y bajo el seguimiento de un experto a ser posible.";
  }
if (c > 20.0 &&  c< 25.0)
  {
  b="NORMALIDAD. No está justificado que quiera adelgazar. En todo caso, si no está conforme con su peso, aumente un poco su actividad física y cuide su alimentación tomando una dieta variada y con abundancia de fruta y verdura.";
  }
if (c > 25.0 && c < 30.0)
  {
  b="SOBREPESO. Usted necesita adelgazar. Y, sobre todo, debe procurar no engordar más para no evolucionar hacia la obesidad. Con el sobrepeso que ahora presenta empieza a haber asociado cierto riesto de aumento de algunas enfermedades cardiovasculares, especialmente si la acumulación de peso se produce alrededor de la cintura, más que si es en las caderas. Le aconsejamos que consulte a un nutricionista. Si sigue el régimen hipocalórico que le proponga y realiza actividad física de forma regular, en unos 6 meses perderá peso y se encontrará mejor.";
  }
if(c > 30.0 && c < 40.0)
  {
  b="OBESIDAD. A partir de un IMC de 30, existe riesgo cardiovascular y de otras enfermedades, además de fatiga, sobrecarga de articulaciones, etc. Necesita acudir a un dietista o nutricionista para adelgazar al menos un 10% de su peso en unos 6 meses; no intente adelgazar por su cuenta.";
  }
document.getElementById("imc").innerHTML=b;
}
</script>


</body>
</html>


Mis cambios han sido:

He pasado la variable V a global. Y en la segunda funcion he quitado el ParseFloat....; que estabas utilizando y no funcionaba. He igualado V a C (porque estas utilizando C) y he quitado los BREAKS.

Creo que funciona bien, por lo menos a mi me funciona.


Un saludo.

jcbaniela

Muchísimas gracias Phantasy, lo he probado y funciona perfecto. Sí que se nota mucho que estoy empezando, lo hice así despues de ver algún manual y algún ejemplo por foros que he visitado. Y esta fue la forma que se me ocurrión. Investigaré sobre el uso del alert.
De alguna forma hay que aprender, y cuando te corrigen errores se aprende mucho. Saludos.

Phantasy

El segundo ejemplo solucionado:


<!DOCTYPE html>
<html>
<body>

<p>Cálculo del Metabolismo Basal (Harris Benedict)</p>
<p>El metabolismo basal o consumo energético en reposo es la energía necesaria para mantener las actividades corporales indispensables para la vida; como son las respiración, la circulación sanguínea, el mantenimiento de la temperatura corporal, la energía necesaria para el sistema nervioso, etc. Rellena las casillas correspondientes y calcula tu metabolismo basal.</p>
<form>
<p>Sexo: <input type="text" id="sexo" /> M o F</p>
<p>Peso (Kg): <input id="peso" value="80" /></p>
<p>Talla (m): <input id="talla" value="1.85" /></p>
<p>Edad: <input type="text" id="edad" /></p>
<input type="button" onClick="calculo();" value="Resultado" />
</form>

<p id="demo"></p>

<script>

function calculo(){
var z = document.getElementById("sexo").value;
var y = document.getElementById("talla").value;
var t = document.getElementById("peso").value;
var p = document.getElementById("edad").value;

var a=66.473;
var b=13.752;
var c=b*t;
var d=5.0033;
var e=100;
var f=y*e;
var g=d*f;
var h=6.755;
var i=h*p;
var j=655.0955;
var k=9.563;
var l=k*t;
var m=1.8496;
var o=m*f;
var q=4.6756;
var r=q*p;
var s=(a+c+g-i).toFixed(0);
var u=(j+l+o+r).toFixed(0);
var v = 0;

if (z=="M" || z=="m")
  {
  v=s;
  }
if (z=="F" || z=="f")
  {
  v=u;
  }
   
document.getElementById("demo").innerHTML=v+" Kcal";
}
</script>

</body>
</html>


Espero que veas las pocas modificaciones. Si tienes alguna duda pregunta.

Un saludo.

jcbaniela

Buenas tardes,

muchísimas gracias, el primer caso funciona perfectamente. El segundo caso si condiciona el sexo, pero no da el resultado que debería, pero esto seguro que son las fórmulas que le planteé, alguna debe estar mal escrita. Voy a resolverla y lo publico aquí para disponer del ejemplo correcto.

jcbaniela

Correcto, este último error para el segundo caso era un error en un signo en el cálculo, pego aquí el código ya correcto. Puede que existe una forma más eficiente, pero debido a mi nivel es lo que he sacado jaja. Gracias por la ayuda:

<!DOCTYPE html>
<html>
<body>

<p>Cálculo del Metabolismo Basal (Harris Benedict)</p>
<p>El metabolismo basal o consumo energético en reposo es la energía necesaria para mantener las actividades corporales indispensables para la vida; como son las respiración, la circulación sanguínea, el mantenimiento de la temperatura corporal, la energía necesaria para el sistema nervioso, etc. Rellena las casillas correspondientes y calcula tu metabolismo basal.</p>
<form>
<p>Sexo: <input type="text" id="sexo" /> M o F</p>
<p>Peso (Kg): <input id="peso" value="80" /></p>
<p>Talla (m): <input id="talla" value="1.85" /></p>
<p>Edad: <input type="text" id="edad" /></p>
<input type="button" onClick="calculo();" value="Resultado" />
</form>

<p id="demo"></p>

<script>

function calculo(){
var z = document.getElementById("sexo").value;
var y = document.getElementById("talla").value;
var t = document.getElementById("peso").value;
var p = document.getElementById("edad").value;

var a=66.473;
var b=13.752;
var c=b*t;
var d=5.0033;
var e=100;
var f=y*e;
var g=d*f;
var h=6.755;
var i=h*p;
var j=655.0955;
var k=9.563;
var l=k*t;
var m=1.8496;
var o=m*f;
var q=4.6756;
var r=q*p;
var s=(a+c+g-i).toFixed(0);
var u=(j+l+o-r).toFixed(0);
var v = 0;

if (z=="M" || z=="m")
  {
  v=s;
  }
if (z=="F" || z=="f")
  {
  v=u;
  }
   
document.getElementById("demo").innerHTML=v+" Kcal";
}
</script>

</body>
</html>