Anuncios Google

[Duda] Javascript

Buen día, compañeros.
Tengo un ligero script en javascript el cual debe mostrar el signo zodiacal segun la fecha que el usuario ingrese pero no lo hace y no sé a que se deba.
Espero puedan ayudarme, de antemano, gracias.

 

PD: Sé que algunos if se pueden factorizar pero por cuestiones de orden y lectura así lo preferí.

 

 

<html>
 
	<head>
		<title> Javascript 4 </title>
		<meta charset="utf-8">
	</head>
 
	<body>
	<mce:script type="text/javascript"><!--
		function sign(){
			var date = document.getElementById("user_date").value;
			var d = date.getDate();
			var m = date.getMonth();
			var a = date.getYear();
 
			if ((d >= 23 && m == 10) || (d <= 22 && m == 11)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Sagitario";
			}else if ((d >= 23 && m == 11) || (d <= 20 && m == 0)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Capricornio";
			}else	 if ((d >= 21 && m == 0) || (d <= 19 && m == 1)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Acuario";
			}else	 if ((d >= 20 && m == 1) || (d <= 20 && m == 2)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Piscis";
			}else if ((d >= 21 && m == 2) || (d <= 21 && m == 3)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Aries";
			}else	 if ((d >= 22 && m == 3) || (d <= 21 && m == 4)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Tauro";
			}else if ((d >= 22 && m == 4) || (d <= 21 && m == 5)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Géminis";
			}else if ((d >= 22 && m == 5) || (d <= 22 && m == 6)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Cáncer";
			}else if ((d >= 23 && m == 6) || (d <= 22 && m == 7)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Leo";
			}else if ((d >= 23 && m == 7) || (d <= 22 && m == 8)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Virgo";
			}else if ((d >= 23 && m == 8) || (d <= 22 && m == 9)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Libra";
			}else if ((d >= 23 && m == 9) || (d <= 22 && m == 10)){
				document.getElementById("result").innerHTML = "Tu signo zodiacal es: Escorpio";
			}
		}
 
// --></mce:script>
 
		<input type="date" name="user_date"/>
		<input type="button" value="validar" onclick="sign();" />
		<h5 id="result"></h5>
	</body>
 
</html>


--[NO EXISTEN LOS LIMITES =D]--


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Pues... tienes 2 errores: El

Pues... tienes 2 errores:

  • El más evidente está en la línea 11. Value es un string (YYYY-MM-DD creo), por lo que no le puedes aplicar las funciones que tienes en las siguientes 3 líneas. Lo que debes hacer es crear un objeto Date a partir de ese string, y ya podrás usar las otras funciones:
    var date = new Date(document.getElementById("user_date").value);
  • Notarás que usé getElementById, la razón es que getElementByName NO EXISTE (el nombre correcto es getElementsByName, nótese la s extra). Como sea es mejor usar id, ya que es un identificador único, mientras que el name pueden tenerlo varios elementos. getElementsByName te regresa un array con todos los objetos que tienen el name indicado (en el orden en que aparecen en el documento), por lo que es confuso si te quieres referir a un elemento en especial... en conclusión: no uses name, usa id... xD

Ambos errores son muy evidentes si ejecutas tu code con la Consola Web activada (en otros navegadores no sé, pero en Firefox se abre con Ctrl+Shift+K).

Imagen de PerezRE

Solucionado

Je, gracias. Evidentemente tienes razón. 

Imagen de Monty - Calabato64

Prueba a cambiar todos los if

Prueba a cambiar todos los if por else if, excepto el primero. Prueba también a añadir algo (Que será sustituido por el signo) entre <h5></h5>, aunque sea un simple espacio en blanco.


- Monty (anteriormente, Calabato64)

Imagen de PerezRE

Igual

Lo he intentado pero sigue sin funcionar. 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.