elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Problema con una condición (Si...Sino) en javascript
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con una condición (Si...Sino) en javascript  (Leído 3,419 veces)
Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
Problema con una condición (Si...Sino) en javascript
« en: 10 Junio 2011, 07:05 am »

Tengo que hacer una página que muestre un plato y un color de fondo diferente según la hora del día. Ya lo tengo hecho, solo que tengo problemas con una condición. Este es el código:

Código
  1. <html>
  2. <head>
  3. <title> Restaurante Delicious </title>
  4. </head>
  5.  
  6. <body>
  7.  
  8. <script language="javascript">
  9. var d = new Date();
  10. var hora = d.getHours();
  11.  
  12. document.write('<font size="6"> <em> <strong> <center> Restaurante Delicious </center> </strong> </em> </font size>');
  13.  
  14. if (hora >= 02 && hora < 6)
  15. {
  16. document.write('<center> El restaurante est&aacute cerrado. <br> Nuestros horarios son de lunes a domingo de 6:00 a.m. a 2:00 a.m. </center>');
  17. }
  18.  
  19. else
  20. {
  21.  
  22. document.write('<font size="1" color="E5E7DF"> Esta p&aacutegina le mostrar&aacute un plato seg&uacuten la hora del d&iacutea <br> </font size color');
  23. document.write('<p> Para ahora tenemos: </p>');
  24.  
  25. if (hora >= 06 && hora < 12)
  26. {
  27. document.bgColor='A68785'
  28. document.write('<center> <strong> Desayuno </strong> <br> Mang&uacute de pl&aacutetano verde </center> <br> <br>');
  29. document.write('<center> <img src="/home/gustavo/Escritorio/Documentos/ITLA/2do cuatrimestre/Fundamento de programacion/Programas/Imagenes restaurante/mangu.jpg"> </center>');
  30. }
  31.  
  32. if (hora >= 12 && hora < 18)
  33. {
  34. document.bgColor='AAB295'
  35. document.write('<center> <strong> Almuerzo </strong> <br> Bistec Encebollado </center> <br> <br>');
  36. document.write('<center> <img src="/home/gustavo/Escritorio/Documentos/ITLA/2do cuatrimestre/Fundamento de programacion/Programas/Imagenes restaurante/bistec.jpg">');
  37. }
  38.  
  39. if (hora >= 18 && hora < 02)
  40. {
  41. document.bgColor='D8FC84'
  42. document.write('<center> <strong> Cena </strong> <br> <font size="4"> Sopa de Pescado </font size> </center> <br> <br>');
  43. document.write('<center> <img src="/home/gustavo/Escritorio/Documentos/ITLA/2do cuatrimestre/Fundamento de programacion/Programas/Imagenes restaurante/sopa.jpg"> </center>');
  44. }
  45.  
  46. }
  47. </script>
  48. </body>
  49. </html>

El problema es con la última condición. Si la hora es mayor o igual de las 6 de la tarde y menor que las 2 de la mañana debería mostrar Sopa de pescado y la foto correspondiente. Pero haciendo una prueba, si pongo mi reloj a cualquier hora mayor que las 00 (o sea las 12 de la noche o madrugada) y menor que las 2 (tiene que ser menor, porque si no se cumpliría el primer if o condición o luego no se ejecutarían lo demás, estaría cerrado el restaurante). O sea funciona bien, pero solo con la hora menor de las 00. No entiendo porque, creo que la lógica está bien planteada. Es como si hubiera un corte a partir de las 00 y el sistema lo calculara diferente.

Sé que puedo resolverlo poniendo dos condiciones, así:

Código
  1. if (hora >= 18 && hora < 00)
  2. {
  3. document.bgColor='D8FC84'
  4. document.write('<center> <strong> Cena </strong> <br> <font size="4"> Sopa de Pescado </font size> </center> <br> <br>');
  5. document.write('<center> <img src="/home/gustavo/Escritorio/Documentos/ITLA/2do cuatrimestre/Fundamento de programacion/Programas/Imagenes restaurante/sopa.jpg"> </center>');
  6. }
  7.  
  8. if (hora >= 00 && hora < 02)
  9. {
  10. document.bgColor='D8FC84'
  11. document.write('<center> <strong> Cena </strong> <br> <font size="4"> Sopa de Pescado </font size> </center> <br> <br>');
  12. document.write('<center> <img src="/home/gustavo/Escritorio/Documentos/ITLA/2do cuatrimestre/Fundamento de programacion/Programas/Imagenes restaurante/sopa.jpg"> </center>');
  13. }
  14.  

Pero, si la lógica del primero está bien ¿Por qué no funciona como debería?




« Última modificación: 10 Junio 2011, 07:08 am por Aikanáro Anário » En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
Maurice_Lupin


Desconectado Desconectado

Mensajes: 353

GPS


Ver Perfil WWW
Re: Problema con una condición (Si...Sino) en javascript
« Respuesta #1 en: 10 Junio 2011, 07:43 am »

no es lógico que una hora sea mayor que 18 y menor que 2 al mismo tiempo, eso es lo que significa la && verdadero si ambas condiciones verdaderas. Prueba cambiando el && por ||, debería funcionar  ;D


En línea

Un error se comete al equivocarse.
mit


Desconectado Desconectado

Mensajes: 830

¡Mit!


Ver Perfil WWW
Re: Problema con una condición (Si...Sino) en javascript
« Respuesta #2 en: 10 Junio 2011, 08:26 am »

La solucion de aca del brother esta bién pero innecesaria xD, basta con que pongas un else.

Tu tienes esto:
Código
  1. if (hora >= 18 && hora < 02)
  2. {
  3. document.bgColor='D8FC84'
  4. document.write('<center> <strong> Cena </strong> <br> <font size="4"> Sopa de Pescado </font size> </center> <br> <br>');
  5. document.write('<center> <img src="/home/gustavo/Escritorio/Documentos/ITLA/2do cuatrimestre/Fundamento de programacion/Programas/Imagenes restaurante/sopa.jpg"> </center>');
  6. }

Cambialo por esto:
Código
  1. else
  2. {
  3. document.bgColor='D8FC84'
  4. document.write('<center> <strong> Cena </strong> <br> <font size="4"> Sopa de Pescado </font size> </center> <br> <br>');
  5. document.write('<center> <img src="/home/gustavo/Escritorio/Documentos/ITLA/2do cuatrimestre/Fundamento de programacion/Programas/Imagenes restaurante/sopa.jpg"> </center>');
  6. }

Y esto es claro porque ese rango que quieres cubrir, es el único que queda por validar, por lo tanto es un else a tus demás validaciones.

Saludos
En línea

Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
Re: Problema con una condición (Si...Sino) en javascript
« Respuesta #3 en: 10 Junio 2011, 16:54 pm »

no es lógico que una hora sea mayor que 18 y menor que 2 al mismo tiempo, eso es lo que significa la && verdadero si ambas condiciones verdaderas. Prueba cambiando el && por ||, debería funcionar  ;D

Sí, es lógico porque el formato es 24 horas. Las 18 son las 6 de la tarde y las 02, son las dos de la madrugada. Así, una hora puede ser mayor que las 18 (o sea las 6 de la tarde) y menor que las 2 (de la madrugada). Entonces "(hora >= 18 && hora <2)" abarca cualquier hora entre las 6 de la tarde y las 2 de la madrugada.

Intenté poner || como dices, pero cuando hice la prueba me di cuenta que así saldrían dos platos. Porque la condición está diciendo "si es mayor que las 6 O menor que las 2" y así saldría el desayuno o el almuerzo, dependiendo de la hora del día, porque tanto el desayuno como el almuerzo están antes de las 2 de la madrugada, por lo tanto su hora correspondiente es menor que 2 y se cumplirían las dos condiciones.


La solucion de aca del brother esta bién pero innecesaria xD, basta con que pongas un else.

Tu tienes esto:
Código
  1. if (hora >= 18 && hora < 02)
  2. {
  3. document.bgColor='D8FC84'
  4. document.write('<center> <strong> Cena </strong> <br> <font size="4"> Sopa de Pescado </font size> </center> <br> <br>');
  5. document.write('<center> <img src="/home/gustavo/Escritorio/Documentos/ITLA/2do cuatrimestre/Fundamento de programacion/Programas/Imagenes restaurante/sopa.jpg"> </center>');
  6. }

Cambialo por esto:
Código
  1. else
  2. {
  3. document.bgColor='D8FC84'
  4. document.write('<center> <strong> Cena </strong> <br> <font size="4"> Sopa de Pescado </font size> </center> <br> <br>');
  5. document.write('<center> <img src="/home/gustavo/Escritorio/Documentos/ITLA/2do cuatrimestre/Fundamento de programacion/Programas/Imagenes restaurante/sopa.jpg"> </center>');
  6. }

Y esto es claro porque ese rango que quieres cubrir, es el único que queda por validar, por lo tanto es un else a tus demás validaciones.

Saludos


Ok, no pensé en eso xD.
Para aclarar... ¿me dices que siempre en la última condición que vaya a hacer debo usar un else, ya que las demás no se cumplirían y solo quedaría esa?



Lo puse así:

Código
  1. <html>
  2. <head>
  3. <title> Restaurante Delicious </title>
  4. </head>
  5.  
  6. <body>
  7.  
  8. <script language="javascript">
  9.  
  10. alert('La hora de su sistema debe estar configurada correctamente para la adecuada visualizaci\u00f3n del sitio. Si no lo est\u00e1, por favor aj\u00fastela y vuelva a cargar la p\u00e1gina.');
  11.  
  12. var d = new Date();
  13. var hora = d.getHours();
  14.  
  15. document.write('<font size="6"> <em> <strong> <center> Restaurante Delicious </center> </strong> </em> </font size>');
  16.  
  17. if (hora >= 02 && hora < 6)
  18. {
  19. document.write('<center> El restaurante est&aacute cerrado. <br> Nuestros horarios son de lunes a domingo de 6:00 a.m. a 2:00 a.m. </center>');
  20. }
  21.  
  22. else
  23. {
  24.  
  25. document.write('<font size="1" color="E5E7DF"> Esta p&aacutegina le mostrar&aacute un plato seg&uacuten la hora del d&iacutea <br> </font size color');
  26. document.write('<p> Para ahora tenemos: </p>');
  27.  
  28. if (hora >= 06 && hora < 12)
  29. {
  30. document.bgColor='A68785'
  31. document.write('<center> <strong> Desayuno </strong> <br> Mang&uacute de pl&aacutetano verde </center> <br> <br>');
  32. document.write('<center> <img src="Imagenes restaurante/mangu.jpg"> </center>');
  33. }
  34.  
  35. else if (hora >= 12 && hora < 18)
  36. {
  37. document.bgColor='AAB295'
  38. document.write('<center> <strong> Almuerzo </strong> <br> Bistec Encebollado </center> <br> <br>');
  39. document.write('<center> <img src="Imagenes restaurante/bistec.jpg"> </center>');
  40. }
  41.  
  42. else
  43. {
  44. document.bgColor='D8FC84'
  45. document.write('<center> <strong> Cena </strong> <br> <font size="4"> Sopa de Pescado </font size> </center> <br> <br>');
  46. document.write('<center> <img src="Imagenes restaurante/sopa.jpg"> </center>');
  47. }
  48.  
  49. }
  50. </script>
  51. </body>
  52. </html>

Y funciona bien.
« Última modificación: 10 Junio 2011, 17:45 pm por Aikanáro Anário » En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: Problema con una condición (Si...Sino) en javascript
« Respuesta #4 en: 10 Junio 2011, 17:49 pm »

Te han dicho que es ilógico porque la variable HORA no puede contener esos dos valores al mismo tiempo, será mayor o igual que 18 ó será menor que 2, uno de las dos. ejemplo:

Código:
hora = 20;

if (hora >= 18 && hora < 02)
....

simplemente no entrara en el bloque porque no se cumplen las DOS condiciones, eso va a ser indiferente de si las 18 son las 6 o no, aquí estas trabajando con el formato 24 (desde 0:00 hasta 23:59) y debes evaluar dentro del rango de esos valores.

así también podrías trabajarlo:

Código
  1. var hora = 20;
  2. if (hora >= 06 && hora < 12)
  3. {
  4.  // ...
  5.  alert ('esta entre las 6 y las 12');
  6. }
  7. else if (hora >= 12 && hora < 18)
  8. {
  9.   // ...
  10.   alert ('esta entre las 12 y las 18');
  11. }
  12. else if (hora >= 18 || hora < 02)
  13. {
  14.   // ...
  15.   alert ('esta entre las 18 y las 2');
  16. }
En línea

Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
Re: Problema con una condición (Si...Sino) en javascript
« Respuesta #5 en: 10 Junio 2011, 20:30 pm »

Te han dicho que es ilógico porque la variable HORA no puede contener esos dos valores al mismo tiempo, será mayor o igual que 18 ó será menor que 2, uno de las dos. ejemplo:

Código:
hora = 20;

if (hora >= 18 && hora < 02)
....

simplemente no entrara en el bloque porque no se cumplen las DOS condiciones, eso va a ser indiferente de si las 18 son las 6 o no, aquí estas trabajando con el formato 24 (desde 0:00 hasta 23:59) y debes evaluar dentro del rango de esos valores.

Es que la variable no tiene que coger los dos valores. Es diferente a decir que se tienen que cumplir las dos condiciones.

La variable tuviera que coger los dos valores si usara signos de igual, así: (hora=18 && hora=02), pero estoy diciendo que sea mayor que un número y menor que otro, y esas dos condiciones sí se pueden cumplir, por ejemplo si la hora fueran las 20. Es mayor que 18 y menor que las 2 de la madrugada, así, sí entraría en el bloque. Porque lo que busco es que entre en el bloque solamente durante la noche, a partir de las 18.

Con respecto a usar  || , no sé que hice mal la primera vez que salían dos imágenes, pero volví a probar ahora y no salen, o sea también es válido hacerlo así.

« Última modificación: 10 Junio 2011, 20:32 pm por Aikanáro Anário » En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
Maurice_Lupin


Desconectado Desconectado

Mensajes: 353

GPS


Ver Perfil WWW
Re: Problema con una condición (Si...Sino) en javascript
« Respuesta #6 en: 11 Junio 2011, 00:55 am »

 :xD ya me estaba creyendo que me equivoque o.0!
En línea

Un error se comete al equivocarse.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con php Condicion de session « 1 2 »
PHP
alexkof158 15 9,608 Último mensaje 27 Noviembre 2009, 22:10 pm
por [u]nsigned
Cambio de boton a partir de una condición (HTML,javascript)
Desarrollo Web
rolomo 5 3,022 Último mensaje 24 Enero 2012, 23:04 pm
por Shell Root
[RESUELTO] Problema con condicion IF ELSE en PHP
Desarrollo Web
rodrigoandres91 2 1,021 Último mensaje 15 Noviembre 2015, 17:52 pm
por rodrigoandres91
Problema de acceso a una condición
Programación C/C++
poliche 0 840 Último mensaje 6 Octubre 2016, 01:08 am
por poliche
¿Como puedo crear una condición si algo incrementa? javascript
Desarrollo Web
SrTrp 2 1,025 Último mensaje 10 Septiembre 2017, 02:27 am
por SrTrp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines