Foros del Web » Programando para Internet » Javascript »

[Urgente] Problema con variable global & alert

Estas en el tema de [Urgente] Problema con variable global & alert en el foro de Javascript en Foros del Web. Hola tod@s, antes de nada agradecer la ayuda que pueda obtener. Tengo un problema con una variable global que no logro entender os explico el ...
  #1 (permalink)  
Antiguo 13/01/2009, 06:03
Avatar de Sophie_Madrid  
Fecha de Ingreso: agosto-2008
Mensajes: 237
Antigüedad: 15 años, 8 meses
Puntos: 5
[Urgente] Problema con variable global & alert

Hola tod@s, antes de nada agradecer la ayuda que pueda obtener.

Tengo un problema con una variable global que no logro entender os explico el caso.

tengo declarada una variable global llamada gmarkers

var gmarkers = [];

pues bien en una de las funciones donde se deberia recoger esta variable, cuando llega a un bucle for en el que la condicion de parada es i<gmarkers.lenght me llega con valor 0 y no entra cuando si debería de tener valor.

Lo curioso viene ahora, si yo pongo un alert("hola estoy aquí") justo antes del for, la variable gmarkers.lenght coge el valor correctamente y hace el bucle perfectamente.

Caso 1

for (var i=0; i<gmarkers.lenght; i++)
{
alert("ejecucion del for");
}
alert("salgo de la funcion");


Resultado: salgo de la funcion

Caso 2

alert("entro en la funcion");
for (var i=0; i<gmarkers.lenght; i++)
{
alert("ejecucion del for");
}
alert("salgo de la funcion");


Resultado: entro en la funcion -> ejecucion del for (i veces) -> salgo de la funcion

No entiendo que puede afectar el alert en el comportamiento de la variable global.

Saludos y gracias por cualquier tipo de ayuda.

Sophie
  #2 (permalink)  
Antiguo 13/01/2009, 06:10
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: [Urgente] Problema con variable global & alert

length
sera por eso?

El alert solo "fuerza" el funcionamiento
  #3 (permalink)  
Antiguo 13/01/2009, 06:16
Avatar de Sophie_Madrid  
Fecha de Ingreso: agosto-2008
Mensajes: 237
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: [Urgente] Problema con variable global & alert

Cita:
Iniciado por Fernand0 Ver Mensaje
length
sera por eso?

El alert solo "fuerza" el funcionamiento
Hola fernando, no eso no es... lo he escrito de memoria y me he confundido... pero en el codigo está bien escrito.

Que quieres decir con que fuerza el funcionamiento??

Saludos y gracias ;)
  #4 (permalink)  
Antiguo 13/01/2009, 06:22
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: [Urgente] Problema con variable global & alert

Si.. no se de teoria.. pero lo vendria a "forzar"... a veces por mas que no este 100% bien el codigo.. con un comando de mas.. funciona a pesar de que no deberia

Código javascript:
Ver original
  1. var gm = [];
  2. gm[0]='a'; gm[1]='b'; gm[2]='c';
  3.  
  4. function getGM()
  5. {
  6. for (var i=0; i<gm.length; i++) alert(gm[i]);
  7. }
  8.  
  9. getGM();

Pega el codigo como lo tenes.. porque te deberia de andar
  #5 (permalink)  
Antiguo 13/01/2009, 06:47
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: [Urgente] Problema con variable global & alert

Hola Sophie_Madrid,

Lo único que se me ocurre es que, en algún momento que no estás viendo, tu variable global caza valores por algún lado y por ello se activa el for.
Yo he montado algo parecido y cuando no hay valores no hace el for, pero si cuando los tiene.
intenta hacer dos cosas:
- debuga el javascript en ambos casos y podrás ver si está cogiendo valores o no
- la otra cosa es que copies lo que puedas del código y vemos a ver qué está pasando.

Salu2
  #6 (permalink)  
Antiguo 13/01/2009, 08:06
Avatar de Sophie_Madrid  
Fecha de Ingreso: agosto-2008
Mensajes: 237
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: [Urgente] Problema con variable global & alert

Muchisimas gracias a los 2, aqui os pongo el codigo

Código javascript:
Ver original
  1. // == rebuilds the sidebar to match the markers currently displayed ==
  2.       function makeSidebar()
  3.       {
  4.         var html = "";
  5.         var num_cli = gmarkers.length;
  6.         //alert(num_cli);
  7.         for (var i=0; i<num_cli; i++)
  8.         {
  9.          //alert(gmarkers.length); 
  10.          //alert("Hago el sidebar");
  11.          if (!gmarkers[i].isHidden())
  12.           {
  13.             //alert("He escrito el sidebar de:" + gmarkers[i].myname);  
  14.             html += '<a href="javascript:myclick(' + i + ')">' + gmarkers[i].myname + '</a>';
  15.           }
  16.         }
  17.         //alert("Hola");
  18.         document.getElementById("side_bar").innerHTML = html;
  19.       }

El for es el que no me hace sino pongo un alert antes

Osea que puede haber algún error y el alert lo este enmascarando?

Sophie
  #7 (permalink)  
Antiguo 13/01/2009, 08:20
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: [Urgente] Problema con variable global & alert

te devuelve bien isHidden()(o sea.. lo probaste con un alert? alert(gmarkers[i].isHidden());) ? lo que esta antes de isHidden te lo devuelve bien verdad?
  #8 (permalink)  
Antiguo 13/01/2009, 08:31
Avatar de Sophie_Madrid  
Fecha de Ingreso: agosto-2008
Mensajes: 237
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: [Urgente] Problema con variable global & alert

Cita:
Iniciado por Fernand0 Ver Mensaje
te devuelve bien isHidden()(o sea.. lo probaste con un alert? alert(gmarkers[i].isHidden());) ? lo que esta antes de isHidden te lo devuelve bien verdad?
Te comento... si descomento el alert que está antes del for, me entra en el for y me ejecuta todo correctamente. Ese es el problema, que sin el alert no me entra en el for porque el valor de gmarker.length es 0 (con el alert devuelve gmarkers.length el valor correcto.
  #9 (permalink)  
Antiguo 13/01/2009, 08:34
Avatar de Fernand0  
Fecha de Ingreso: septiembre-2005
Ubicación: Buenos Aires
Mensajes: 610
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: [Urgente] Problema con variable global & alert

En que navegador lo estas haciendo? Internet Explorer?
Te tira algun error? tenes alguna consola de bugs?

Fuera de ese function ejecutando el gmarkers.length te devuelve bien?
  #10 (permalink)  
Antiguo 13/01/2009, 08:40
Avatar de Sophie_Madrid  
Fecha de Ingreso: agosto-2008
Mensajes: 237
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: [Urgente] Problema con variable global & alert

Cita:
Iniciado por Fernand0 Ver Mensaje
En que navegador lo estas haciendo? Internet Explorer?
Te tira algun error? tenes alguna consola de bugs?

Fuera de ese function ejecutando el gmarkers.length te devuelve bien?
Fernand0 lo he probado tanto en explorer como en firefox.

En explorer la página me la devuelve ok y no me pone errores.

Se que es algo raro...

En principio gmarkers me lo devuelve bien porque me saca los iconos en el mapa con el numero que corresponde en cada caso, simplemente no me esta dibujando una side bar, pero el resto lo ejecuta correctamente (o al menos eso creo :P).

Gracias de nuevo por tu interés.

Sophie
  #11 (permalink)  
Antiguo 13/01/2009, 09:00
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: [Urgente] Problema con variable global & alert

el código parece que no tiene errores... pues si es raro.
Si quieres intenta esto (que a lo mejor es una chorrada, lo mas posible, pero mas de una vez una chorrada de estas me ha solucionado esto).
Cuando declares la variable num_cli hazlo así:
var num_cli = new Number;
num_cli = gmarkers.length;

pudiera llegar a ser que la variable num_cli no la está entendiendo como número y por eso no hace el for, pero si muestra el alert si lo entiende, es decir, como si necesitara una parada para asimilar el código o algo así (ya te digo que a lo mejor es absurdo, pero supongo que no pierdes nada...)

a ver si hay suerte... :)
  #12 (permalink)  
Antiguo 13/01/2009, 09:22
Avatar de Sophie_Madrid  
Fecha de Ingreso: agosto-2008
Mensajes: 237
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: [Urgente] Problema con variable global & alert

Cita:
Iniciado por ceSharp Ver Mensaje
el código parece que no tiene errores... pues si es raro.
Si quieres intenta esto (que a lo mejor es una chorrada, lo mas posible, pero mas de una vez una chorrada de estas me ha solucionado esto).
Cuando declares la variable num_cli hazlo así:
var num_cli = new Number;
num_cli = gmarkers.length;

pudiera llegar a ser que la variable num_cli no la está entendiendo como número y por eso no hace el for, pero si muestra el alert si lo entiende, es decir, como si necesitara una parada para asimilar el código o algo así (ya te digo que a lo mejor es absurdo, pero supongo que no pierdes nada...)

a ver si hay suerte... :)

Gracias ceSharp, la asignacion de gmarkers.length a la variable num_cli la hice a posteriori para ver si sonaba la flauta, pero en el el for al principio tenia directamente i<gmarkers.length y tampoco funcionaba.

El problema creo que viene por gmarkers no por num_cli.

Aissss toy desesperada... snif snif

Saludos y gracias de nuevo

Sophie
  #13 (permalink)  
Antiguo 13/01/2009, 10:00
Avatar de sweetlydark  
Fecha de Ingreso: septiembre-2008
Mensajes: 391
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: [Urgente] Problema con variable global & alert

Creo que debes probarlo en firefox ya que hice una pequeña prueba con tu código y firefox encontró un error mientras que IE me dijo que todo estaba bien.

Cuando abres firefox puedes usar ctrl + shift + j para sacar el consola de error dale clear y carga tu pagina.

Seria bueno también si no encuentras un error que se puede ver como implementas el código y como se esta llenando el variable gmarkers. En si creo que tienes un problema de secuencia de cargamento en tu pagina.
__________________
Por fin vuelvo a tener internet!
http://www.anidandoetiquetas.com/
  #14 (permalink)  
Antiguo 13/01/2009, 10:14
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: [Urgente] Problema con variable global & alert

Sophie,

sabes debugar javascript en IE?
porque puede que llegues a ver donde está el error.
aún así creo que sweetlydark tiene razón. Algo similar me ocurría a mi con otra aplicación en la que el código necesitaba un tiempo. Estaba trabajando en controlar duración de archivos de sonidos y necesitaba hacer una pausa de 3 segundos para darle tiempo a cargar el archivo y devolverme la duración, sino me daba duración cero...
puede que vayan por ahí los tiros, porque si haces el alert y luego te funciona tiene pinta de que una vez que muestra el alert le ha dado tiempo a cargar la variable.

salu2
  #15 (permalink)  
Antiguo 13/01/2009, 10:54
Avatar de Sophie_Madrid  
Fecha de Ingreso: agosto-2008
Mensajes: 237
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: [Urgente] Problema con variable global & alert

Gracias por las respuesta, ahora cuando llegue a casa lo pruebo y os comento...

ceSharp en IE no se debuguear... :S

Mil gracias sweetlydark ;)
  #16 (permalink)  
Antiguo 13/01/2009, 11:45
Avatar de sweetlydark  
Fecha de Ingreso: septiembre-2008
Mensajes: 391
Antigüedad: 15 años, 7 meses
Puntos: 10
Respuesta: [Urgente] Problema con variable global & alert

Un placer :D
__________________
Por fin vuelvo a tener internet!
http://www.anidandoetiquetas.com/
  #17 (permalink)  
Antiguo 14/01/2009, 03:59
Avatar de Sophie_Madrid  
Fecha de Ingreso: agosto-2008
Mensajes: 237
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: [Urgente] Problema con variable global & alert

Buenos días, ceSharp, sweetlydark y Fernand0 os he enviado un mp con la dirección de la web donde está el codigo que me está dando problemas

Un saludo y gracias por la ayuda.

Sophie. =)
  #18 (permalink)  
Antiguo 14/01/2009, 10:59
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 15 años, 6 meses
Puntos: 66
Respuesta: [Urgente] Problema con variable global & alert

Hola Sophie,

buff que locura!! :)
no encuentro el porqué del fallo...
pero bueno, si va a ser problema de aguantar el codigo un instante (como hace el alert) ¿has probado a pausar el código y arrancarlo momentos después?
Mas o menos se hace así:

Veo que a la función makeSidebar se la llama desde las funciones boxClick y ReadDataURL; en vez de llamarla directamente makeSidebar(); hazlo con una pausa:
setInterval(makeSidebar,2500);

de esta manera se la llama a la función pero dicha llamada se hará 2,5 segundos después (el tiempo el que tú consideres oportuno). Si es cuestión de tiempo de carga de variables o algo similar supongo que se solucionará; pero no te aseguro nada!! :)
es todo lo que se me ocurre. Y los que sepáis mas de esto que yo no me matéis si estoy diciendo demasiadas burradas!!! solo son ideas!!! :)

espero que si no es con mi solución sea con cualquier otra pero que lo apañes.

salu2
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 13:17.