Foros del Web » Programando para Internet » Javascript »

Error switch

Estas en el tema de Error switch en el foro de Javascript en Foros del Web. Tengo este switch: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original <tr><td class=Forms>Number Classes:</td><td><select name="numberclasses" id="numberclasses" onchange="callAjax()">         <option>1</option>         ...
  #1 (permalink)  
Antiguo 26/12/2012, 09:32
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 13 años, 4 meses
Puntos: 5
Exclamación Error switch

Tengo este switch:

Código Javascript:
Ver original
  1. <tr><td class=Forms>Number Classes:</td><td><select name="numberclasses" id="numberclasses" onchange="callAjax()">
  2.         <option>1</option>
  3.         <option>2</option>
  4.         <option>3</option>
  5.     </select></td></tr>
  6.     <div></div>
  7.    
  8. <script type="text/javascript">
  9.  
  10. $("select").change(function() {
  11. str = $(this).val();
  12.  
  13. $("div").text(str);
  14.  
  15. switch()
  16.   {
  17.     case 1:
  18.      document.write("Hola Mundo");
  19.      document.write("Hola Mundo");
  20.     break;
  21.    
  22.      case 2:
  23.      document.write("Hola Mundo");
  24.     break;
  25.  
  26.     case 3:
  27.     document.write("Hola Mundo");
  28.     document.write("Hola Mundo");
  29.     document.write("Hola Mundo");
  30.     break;
  31.  
  32.   }
  33. });
  34.  
  35.  
  36. </script>

Utiliza la variable str como número para saber que caso utilizar. Lo raro es que yo puedo imprimir la variable str:

Código Javascript:
Ver original
  1. $("div").text(str);

Y me da a la perfección el resultado del select.

Pero si la utizo en el switch no funciona.

En el caso de que defina la variable str con un valor estático el switch no da problema alguno:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.  
  3. str = 2;
  4.  
  5. $("div").text(str);
  6.  
  7. switch()
  8.   {
  9.     case 1:
  10.      document.write("Hola Mundo");
  11.      document.write("Hola Mundo");
  12.     break;
  13.    
  14.      case 2:
  15.      document.write("Hola Mundo");
  16.     break;
  17.  
  18.     case 3:
  19.     document.write("Hola Mundo");
  20.     document.write("Hola Mundo");
  21.     document.write("Hola Mundo");
  22.     break;
  23.  
  24.   }
  25. </script>
  #2 (permalink)  
Antiguo 26/12/2012, 09:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Error switch

Haz un parseInt(str) antes de pasarlo por el bloque switch para evitar problemas con los tipos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 26/12/2012, 09:50
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 13 años, 4 meses
Puntos: 5
Exclamación Respuesta: Error switch

Cita:
Iniciado por David Ver Mensaje
Haz un parseInt(str) antes de pasarlo por el bloque switch para evitar problemas con los tipos.
Cómo? así:

Código Javascript:
Ver original
  1. <tr><td class=Forms>Number Classes:</td><td><select name="numberclasses" id="numberclasses" onchange="callAjax()">
  2.         <option>1</option>
  3.         <option>2</option>
  4.         <option>3</option>
  5.     </select></td></tr>
  6.     <div></div>
  7.    
  8. <script type="text/javascript">
  9.  
  10. $("select").change(function() {
  11. valor = $(this).val();
  12.  
  13. $("div").text(valor);
  14.  
  15. parseInt(str);
  16.  
  17. switch(str)
  18.   {
  19.     case 1:
  20.      document.write("Hola Mundo");
  21.      document.write("Hola Mundo");
  22.     break;
  23.    
  24.      case 2:
  25.      document.write("Hola Mundo");
  26.     break;
  27.  
  28.     case 3:
  29.     document.write("Hola Mundo");
  30.     document.write("Hola Mundo");
  31.     document.write("Hola Mundo");
  32.     break;
  33.  
  34.   }
  35. });
  36.  
  37.  
  38. </script>

Disculpar que en el primer post puse:

Código Javascript:
Ver original
  1. switch()

y es:

Código Javascript:
Ver original
  1. switch(str)
  #4 (permalink)  
Antiguo 26/12/2012, 10:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Error switch

Más bien así:
Código Javascript:
Ver original
  1. switch(parseInt(str))
O:
Código Javascript:
Ver original
  1. str = parseInt(str);
Tienes que tomar el valor de retorno de parseInt.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 26/12/2012, 10:10
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 13 años, 4 meses
Puntos: 5
Exclamación Respuesta: Error switch

Cita:
Iniciado por David Ver Mensaje
Más bien así:
Código Javascript:
Ver original
  1. switch(parseInt(str))
O:
Código Javascript:
Ver original
  1. str = parseInt(str);
Tienes que tomar el valor de retorno de parseInt.
Claro!!! Pero sigue sin funcionar
  #6 (permalink)  
Antiguo 26/12/2012, 10:12
Avatar de fishdesign  
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 389
Antigüedad: 13 años, 7 meses
Puntos: 95
Respuesta: Error switch

A lo que se refiere David es que estás obteniendo el valor tipo string del select, y en el case tienes un número (un entero).
Con parseInt() puedes pasar el valor a integer, es decir, número entero.

"2" no es igual a 2

Si pones entre comillas el valor del case, debería funcionarte (si no has cometido errores por otro lado), aunque esto debe ser para que tu mismo veas el fallo y no como una solución.

Igualmente, switch(str) no es correcto, ya que la variable str no tiene asignación en ningún sitio.

Tendrías que hacer str = parseInt(valor);

También deberías declarar las variables locales anteponiendo "var" (sin comillas) delante de las variables.
__________________
Web Designer.
Themes-Up!, próximamente
  #7 (permalink)  
Antiguo 26/12/2012, 10:27
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 13 años, 4 meses
Puntos: 5
Exclamación Respuesta: Error switch

Cita:
Iniciado por fishdesign Ver Mensaje
A lo que se refiere David es que estás obteniendo el valor tipo string del select, y en el case tienes un número (un entero).
Con parseInt() puedes pasar el valor a integer, es decir, número entero.

"2" no es igual a 2

Si pones entre comillas el valor del case, debería funcionarte (si no has cometido errores por otro lado), aunque esto debe ser para que tu mismo veas el fallo y no como una solución.

Igualmente, switch(str) no es correcto, ya que la variable str no tiene asignación en ningún sitio.

Tendrías que hacer str = parseInt(valor);

También deberías declarar las variables locales anteponiendo "var" (sin comillas) delante de las variables.
Ahora funciona! Pero me lo abre independiente. Es decir, en vez de mostrarmelo en la página del formulario, abre una nueva y se vé todo blanco excepto porque pone Hola Mundo las veces correspondientes.
  #8 (permalink)  
Antiguo 26/12/2012, 10:38
Avatar de fishdesign  
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 389
Antigüedad: 13 años, 7 meses
Puntos: 95
Respuesta: Error switch

El problema viene del document.write.
Ya que usas JQuery, tienes otras alternativas, por ejemplo:
Código Javascript:
Ver original
  1. $('body').append('texto');
__________________
Web Designer.
Themes-Up!, próximamente
  #9 (permalink)  
Antiguo 26/12/2012, 10:40
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 13 años, 4 meses
Puntos: 5
Exclamación Respuesta: Error switch

Cita:
Iniciado por fishdesign Ver Mensaje
El problema viene del document.write.
Ya que usas JQuery, tienes otras alternativas, por ejemplo:
Código Javascript:
Ver original
  1. $('body').append('texto');
Perfecto!!!!!!

Etiquetas: funcion, switch
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:27.