Ver Mensaje Individual
  #5 (permalink)  
Antiguo 23/08/2011, 16:47
IXtremeLT
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 10 meses
Puntos: 32
Respuesta: Problemita con Javascript

Hola que tal,

Te diré algo que está fuera de tu problema, pero es algo que deverías aprender desde ya en javascript(en mi opinion) y es lo siguiente:

Cuando realizes un código de muchas líneas, siempre declara las variables usando var aunque aparentemente veas que el funcionamiento es lo mísmo, pues dependiendo dónde declares la variable, esta estará en determinado contexto, de lo contrario la variable se hará pública o global a todo el código javascript que tengas es una página y entre más código más errores de programación habrá.

Ejemplo correcto:
Código Javascript:
Ver original
  1. function x() {
  2.     var a = 1; // Se declara con "var"
  3.  
  4.     // La variable "a" es igual a 1
  5.  
  6.     function asd(){
  7.         // La variable "a" es igual a 1
  8.     }
  9.  
  10. }
  11.  
  12. // La variable "a" es igual a undefined
  13.  
  14. function asfgg(){
  15.     // La variable "a" es igual a undefined
  16. }

Ejemplo incorrecto:

Código Javascript:
Ver original
  1. function x() {
  2.     a = 1; // Se declara sin "var"
  3.  
  4.     // La variable "a" es igual a 1
  5.  
  6.     function asd(){
  7.         // La variable "a" es igual a 1
  8.     }
  9.  
  10. }
  11.  
  12. //La variable "a" es igual a 1
  13.  
  14. function asdqe(){
  15.     //La variable "a" es igual a 1
  16. }

Todo esto es para evitar problemas desconocidos, mira te pondré un ejemplo para que lo ejecutes y lo analizes:
Código Javascript:
Ver original
  1. function conteo1() {
  2.     var contador = 0;
  3.     function sumar() {
  4.         contador = contador + 1;
  5.         return contador;
  6.     }
  7.     return sumar;
  8. }
  9.  
  10. function conteo2() {
  11.     var contador = 0;
  12.     function sumar() {
  13.         contador = contador + 1;
  14.         return contador;
  15.     }
  16.     return sumar;
  17. }
  18.  
  19. var contextoConteo1 = conteo1();
  20. var contextoConteo2 = conteo2();
  21.  
  22. contextoConteo1();
  23. contextoConteo1();
  24. contextoConteo1();
  25. contextoConteo1();
  26. alert( "Conteo1 es: " + contextoConteo1() ); // 5
  27.  
  28. contextoConteo2();
  29. alert( "Conteo2 es: " + contextoConteo2() ); // 2
  30.  
  31. alert( " La variable \"contador\" es igual a " + contador +" \r\n, es decir no está visible aquí" );

Si observas la variable contador no es afectada de ninguna manera los dos conteos tienen sus propias variables "contador", prueba quitando "var" de las variables "contador" y verás que podrán ser afectadan entre los contadoras(como si tuviesen que compartir la mísma variable).

Otra cosa por la que es recomendable usar "var" es que rapidamente se conoce el origen de la variable y así no tienes que estar analizando para descubrir su posible origen.

Espero que sea de tu ayuda, pues yo antes tuve problemas sobre esto y no tenía idea de que era lo que sucedía hasta que con le tiempo lo fuí descubriendo (leyendo en internet) y por si no sabías sobre esto entonces te servirá, saludos.

Última edición por IXtremeLT; 23/08/2011 a las 16:54