Foros del Web » Programando para Internet » Javascript »

Rotador de Imagen

Estas en el tema de Rotador de Imagen en el foro de Javascript en Foros del Web. Buenas foreros, tengo una dudilla que espero podais resolverme. El caso es que tengo un box en el cual quiero mostrar 5 imagenes de 5 ...
  #1 (permalink)  
Antiguo 12/06/2010, 01:50
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 8 meses
Puntos: 13
Rotador de Imagen

Buenas foreros, tengo una dudilla que espero podais resolverme.

El caso es que tengo un box en el cual quiero mostrar 5 imagenes de 5 articulos de una web, cada cual linkeando a su respectivo articulo, he probado de varias formas pero creo que para ahorrar espacio y hacerlo llamativo es la mejor forma, haciendo una rotacion de imagenes.

No encuentro el problema y la consola de errores me muestra un estupendo "is not defined" refiriendose al div en el que quiero insertar el rotativo.
Código PHP:
Ver original
  1. // articles_list.php
  2. <script type="text/javascript">
  3. var image = Array();
  4. var link = Array();
  5. var pos = 0;
  6. <?php
  7.     $sql = mysql_query("SELECT * FROM article ORDER BY id DESC LIMIT 5") or die(mysql_error());
  8.     $x = 0;
  9.     while($row = mysql_fetch_assoc($sql)) {
  10.         if($x==0)
  11.             $img_p = $row[img_p];
  12. ?>
  13.         image[<?php echo $x; ?>] = "<?php echo $row[img_p]; ?>";
  14.         link[<?php echo $x; ?>] = "<?php echo $row[link]; ?>";
  15. <?php
  16.     $x++;
  17.     }
  18. ?>
  19. function tag(id) {
  20.     return document.getElementById(id);
  21. }
  22.  
  23. function rotaImagen(pos) {
  24.     tag('linker').href = link[pos];
  25.     tag('imager').src = image[pos];
  26.     pos++;
  27.     setTimeout("rotaImagen("+pos+")",5000);
  28. }
  29. rotaImagen(pos);
  30. </script>
  31. <tr>
  32.    <td>
  33. <a id="linker"><img id="imager" src="<?php echo $img_p; ?>">
  34.    </td>
  35. </tr>

Seguramente sea algun fallo tonto pero llevo dos horas probando cosas y nada, me sigue saltando el fallo de consola.

¿Alguna sugerencia?
  #2 (permalink)  
Antiguo 12/06/2010, 02:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Rotador de Imagen

Hola:

En principio no veo que cierres el tag <a id="linker"...>

También tienes que considerar que se te va a acabar los elementos del array (no creo que sea error ahora, pero lo será...)

Y por último, procura usar solo lo que recibe el navegador (ver código fuente)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 12/06/2010, 02:55
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Rotador de Imagen

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. var image = Array();
  3. var link = Array();
  4. var pos = 0;
  5.         image[0] = "http://www.team-giants.com/images/upload/1269441285-entrevista sergix.jpg";
  6.         link[0] = "";
  7.         image[1] = "1";
  8.         link[1] = "";
  9. function tag(id) {
  10.     return document.getElementById(id);
  11. }
  12.  
  13. function rotaImagen(pos) {
  14.     tag('linker').href = link[pos];
  15.     tag('imager').src = image[pos];
  16.     pos++;
  17.     setTimeout("rotaImagen("+pos+")",5000);
  18. }
  19. rotaImagen(pos);
  20. </script>
  21. <body>
  22. <a id="linker"><img id="imager" src="imagen_DB.jpg"></a>
  23. </body>

Sigue dando el mismo puñetero error, porcierto, el cierre de la etiqueta <a> era fallo de copiado

Última edición por bNd170; 12/06/2010 a las 03:17
  #4 (permalink)  
Antiguo 12/06/2010, 03:01
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Rotador de Imagen

El intérprete procesa desde arriba hacia abajo, línea por línea. Cuando llega a la línea 20 ejecuta lo que le indicás, pero el problema es que no encuentra el objeto cuyo id es linker, simplemente porque todavía no lo leyó.
Cambia esto:
Código PHP:
rotaImagen(pos); 
por esto:
Código PHP:
onload=function(){rotaImagen(pos);} 
Eso hará que sólo ejecute cuando ya haya sido leído todo el html.
  #5 (permalink)  
Antiguo 12/06/2010, 03:03
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Rotador de Imagen

Ya... creo que lo ví...

Aparte de lo comentado, debes hacerlo con la página cargada para que los tag existan:

window.onload = function() {rotaImagen(0)}
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 12/06/2010, 03:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Rotador de Imagen

¡ups, se me adelantó el amigo Andrés...!

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 12/06/2010, 03:22
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Rotador de Imagen

EDIT: Todo funciona correctamente, mil gracias a ambos.

Última edición por bNd170; 12/06/2010 a las 03:47

Etiquetas: rotador
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 10:09.