Foros del Web » Programando para Internet » Jquery »

Usando jQuery con "$(document).ready" corre dos veces el script al inicio

Estas en el tema de Usando jQuery con "$(document).ready" corre dos veces el script al inicio en el foro de Jquery en Foros del Web. Tengo un pequeño problemilla.. Por un lado, en un .js tengo esto: Código HTML: function tag(id) {return document.getElementById(id);} function randomTips() { listado = tag("tips").getElementsByTagName("li"); do ...
  #1 (permalink)  
Antiguo 22/10/2008, 12:22
 
Fecha de Ingreso: julio-2004
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Usando jQuery con "$(document).ready" corre dos veces el script al inicio

Tengo un pequeño problemilla..

Por un lado, en un .js tengo esto:

Código HTML:
function tag(id) {return document.getElementById(id);}
function randomTips() {
listado = tag("tips").getElementsByTagName("li");
do 
elegido = Math.floor(Math.random() * listado.length);
while (listado[elegido].style.display == "block") ;
for (var i = 0, total = listado.length; i < total; i ++)
listado[i].style.display = (i == elegido) ? "block":"none";
}
Y dentro del HTML, incluí esto:

Código HTML:
<script type="text/javascript">$(document).ready(randomTips)</script> 
Esa linea la tuve que meter dentro del HTML porque aparentemente si la incluia en el .JS la funcion recien se ejecutaba cuando cargaba TODA la pagina.. No se porque, pero incluyendo esa linea en el HTML la ejecuta apenas comienza a cargar...

El problema es que apenas empieza a cargar la página, se ejecuta el "randomTips" pero cuando termina de cargar, se ejecuta de nuevo... Osea, lo que hace basicamente ese JS (que me ayudaron en este foro a armarlo) es elegir un elemento de una lista al azar, y hacerlo visible... Pero al intentar lanzarlo con el $(document).ready, muestra un elemento al azar al empezar a cargar la página, y luego cuando termina muestra OTRO elemento al azar...

Cualquier pista y/o ayuda sobre como resolver esto, estare mas que agradecido...
  #2 (permalink)  
Antiguo 22/10/2008, 12:29
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Usando jQuery con "$(document).ready" corre dos veces el script al inicio

Hola:

Cuando el problema sea debido al uso de una librería o framework, es mejor usar el foro dedicado.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 22/10/2008, 12:41
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Usando jQuery con "$(document).ready" corre dos veces el script al inicio

¿Podrías poner el código completo de la página (*)?

$(document).ready ejecuta lo que le pases cuando la página se cargue, así que me resulta un tanto extraño que se ejecute cuando aún no está cargada la página.



(*) En realidad no hace falta que pongas tooooda la página, pero pon:
- El HTML desde el principio hasta la primera etiqueta después de abrir el <body>
- El archivo .js entero.

O alternativamente, si tienes algún sitio donde podamos ver la página, pon el enlace a ella.
  #4 (permalink)  
Antiguo 22/10/2008, 12:49
 
Fecha de Ingreso: julio-2004
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Usando jQuery con "$(document).ready" corre dos veces el script al inicio

Venkman, perdón.. Pueden verlo aqui: http://mediosregistrados.com/foro/forumdisplay.php?f=2

Es la caja gris de arriba, con titulo rojo y texto negro... Esos son los elementos de la lista que oculta y muestra al azar... Se ve como se carga primero uno, y cuando termina de cargar la página muestra otro... El ícono que esta a la derecha también llama a "randomTips" para cambiar el elemento que se muestra...


Edit: Bueno, finalmente parece que pude lograr que muestre el elemento al azar antes de que termine de cargar toda la página, y que no lo haga dos veces...

Última edición por MRBarto; 22/10/2008 a las 16:17
  #5 (permalink)  
Antiguo 22/10/2008, 18:04
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Usando jQuery con "$(document).ready" corre dos veces el script al inicio

Cita:
Iniciado por MRBarto Ver Mensaje
Es la caja gris de arriba, con titulo rojo y texto negro...
Uhm... No sé a qué caja te refieres pero ahora mismo no veo nada similar en esa página.

Cita:
Iniciado por MRBarto Ver Mensaje
Edit: Bueno, finalmente parece que pude lograr que muestre el elemento al azar antes de que termine de cargar toda la página, y que no lo haga dos veces...
Bueno, supongo entonces que ya lo has arreglado. Aunque, la verdad, yo no veo que se esté llamando a randomTips ninguna vez. Es más, si lo intento llaamr a mano, se queja de que no hay ningún elemento con id="tips".

En fin, si ya lo has arreglado, pues nada.
  #6 (permalink)  
Antiguo 22/10/2008, 20:20
 
Fecha de Ingreso: julio-2004
Mensajes: 13
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Usando jQuery con "$(document).ready" corre dos veces el script al inicio

La verdad, pido disculpas, toda la llamada a ese JS y el código html correspondiente se mostraba sólo a los usuarios registrados... La verdad es que hace tantas horas y días seguidos que estoy trabajando sin parar que muchas cosas se me pasan...

De cualquier manera, como dije, pude resolverlo... Pido disculpas nuevamente por las molestias :p
  #7 (permalink)  
Antiguo 30/11/2010, 04:58
 
Fecha de Ingreso: noviembre-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Respuesta: Usando jQuery con "$(document).ready" corre dos veces el script al inicio

Cita:
Iniciado por MRBarto Ver Mensaje
La verdad, pido disculpas, toda la llamada a ese JS y el código html correspondiente se mostraba sólo a los usuarios registrados... La verdad es que hace tantas horas y días seguidos que estoy trabajando sin parar que muchas cosas se me pasan...

De cualquier manera, como dije, pude resolverlo... Pido disculpas nuevamente por las molestias :p
Y podrías decir como has resuelto que no se ejecute 2 veces?
a mi en document.ready se ejecuta 2 veces y no se pq, de hecho dentro tengo definido un evento click y entonces al hacer click lo ejecuta 2 veces
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 11:40.