Foros del Web » Programando para Internet » Javascript »

ayuda con un bucle

Estas en el tema de ayuda con un bucle en el foro de Javascript en Foros del Web. tengo un bucle para mostrar imagenes que es el siguiente: <script> var number=1; while () { var image= New Image(); image.src=""+number+".jpg"; number++; } </script> Como ...
  #1 (permalink)  
Antiguo 29/03/2003, 03:08
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años, 1 mes
Puntos: 0
ayuda con un bucle

tengo un bucle para mostrar imagenes que es el siguiente:

<script>
var number=1;
while ()
{
var image= New Image();
image.src=""+number+".jpg";
number++;
}
</script>

Como la carpeta de donde saque las imagenes no será siempre la misma, necesito que el bucle se detengue cuando ya no haya más imagenes.

Para eso, creo que podría hacer algo así:

<script>
var number=0;
while ()
{
var image= New Image();
image.src=""+number+".jpg";
image.onerror= <!---PARAR BUCLE--->
number++;
}
</script>

He intentado hacerlo con

while (error=false)
{ ...
image.onerror= myError;
...}

function myError()
{ error=true }

Pero no me funciona. Supongo que hasta que no se detiene el bucle no puede acceder a una funcion de fuera de ese bucle. He visto que se puede poner "break" para romper el bucle, pero he ido probando sin ningun resultado.

Por favor, que alguien me ayude.
  #2 (permalink)  
Antiguo 29/03/2003, 05:27
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola neo_1899_fcb... bienvenido a los foros:

Deberías saber el número de imágenes, yo suelo usar un bucle for:

for (var i = 1; i < max; i ++) {
image = new Image();
image.src = "" + i + ".jpg";
}

Espero que te sirva

Saludos
  #3 (permalink)  
Antiguo 29/03/2003, 06:58
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años, 1 mes
Puntos: 0
no m sirve...

No puedo saber el numero de imagenes...
Este codigo me sirve para una pagina en la cual llamo a las imagenes dependiendo de una variable declarada en la url (index.htm?carpeta=elnombredelacarpeta).

Aunque en mi mensaje lo resumo un poco para no confundir en realidad el script es un poco mas largo y no tengo ningun otro modo de saber cuando debo dejar de cargar.

A ver si alguien puede ayudarme.
  #4 (permalink)  
Antiguo 29/03/2003, 07:10
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola otra vez:

La única forma que yo sé de averiguar los ficheros del servidor es con lenguajes del lado del servidor... php, asp...

Si tu servidor soporta algunos de esos lenguajes, creo que te convendría hacer esa pregunta en alguno de esos foros (a no ser que alguien te dé una solución mejor)

Saludos
  #5 (permalink)  
Antiguo 29/03/2003, 07:20
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola

Efectivamente como comenta el amigo Caricatos javascript no puede interactuar con el servidor. No puedes saber cuántos archivos hay en un directorio (al menos con el javascript-cliente).

Habrás de hacerlo con lenguaje del lado del servidor

saludos
  #6 (permalink)  
Antiguo 29/03/2003, 07:24
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años, 1 mes
Puntos: 0
eso ya lo se....

Eso ya lo se.

Yo solo quiero que se detenga el bucle onerror de una imagen. ¿Eso tampoco se puede?

<script>
var number=1;
while()
{
var image= New Image();
image.src=""+number+".jpg";
image.onerror= -------------DETENER-------------;
number++;
</script>

A mi me da la impresion que eso si se ha de poder....

A ver si alguien me responde...
  #7 (permalink)  
Antiguo 29/03/2003, 07:28
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
¿Y qué se supone que habría de causar el error?
  #8 (permalink)  
Antiguo 29/03/2003, 08:09
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años, 1 mes
Puntos: 0
que la imagen no se encontrase...

si voy cargando imagen 1.jpg, 2.jpg, 3.jpg, 4.jpg.....

cuando no hubiera más.... se causaría el error y se tendría que detener el bucle
  #9 (permalink)  
Antiguo 29/03/2003, 08:11
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Si javascript no es capaz de leer dentro de un directorio cómo sabría que no hay más imágenes para dar ese error?

js te escribirá lo que quieras, si luego la imagen no existe, el navegador te pondrá la crucecita esa nomás y yá.
  #10 (permalink)  
Antiguo 29/03/2003, 08:21
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años, 1 mes
Puntos: 0
...

no es que yo quiera que javascript sepa que no hay mas...

vamos a ver, por ejemplo:
si hay 5 imagenes: 1.jpg, 2.jpg, 3.jpg, 4.jpg y 5.jpg
carga 1.jpg, suma 1, carga 2.jpg, suma 1.......

cuando llega a 6.jpg, la imagen no se carga -> onerror

onerror es un evento javascript, no? que se da cuando no se carga la imagen, no??

en html se puede hacer:
<img src="foto38765.jpg" onError="alert('la imagen del logotipo no se ha podido cargar')">
En caso de que foto38765.jpg no exista, saldra la crucecita... vale, pero tendra lugar lo que indiquemos en el evento onerror ¿no?

en javascript tambien se puede hacer:
<script>
var imagen= New Image();
imagen.src="direccionremota.gif";
imagen.onerror=myError;

function myError()
{
imagen.src="rutalocalporsilaremotanoseencuentra.gi f"
}
</script>

Eso se puede hacer seguro, que yo lo he probado... o no!?!

Pues yo quiero que onerror se detenga el bucle, sino se haría infinito y no se podría cargar la pagina.
  #11 (permalink)  
Antiguo 29/03/2003, 08:24
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
voy a darle unas vueltas a ver si se me ocurre algo....
  #12 (permalink)  
Antiguo 29/03/2003, 08:26
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años, 1 mes
Puntos: 0
gracias.... espero tu respuesta

  #13 (permalink)  
Antiguo 30/03/2003, 07:14
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola de nuevo,

estuve jugando ayer con el tema este.... y si bien digamos que "algo" he conseguido, yo no confiaría mis páginas a este sistema.

Además, por algún motivo que desconozco explorer lo hace bien pero cuando actualizas para volver a probarlo me hace una fantástica operación no válida de esas que siguen con otra sugiriendo reiniciar y consultar con tu proveedor.
En Netscape ma o meno pero al menos no da error de programa.

El tema está en que ese error no se puede obtener hasta que el navegador ha llamado a la imagen y ha detectado que no existe, por lo que hay que ir llamandolas de una en una y esperar ese error para dejar de llamar a más imágenes.

A mi no me convence nada, yo que tú usaba algún lenguaje del lado servidor que pa eso funcionan muy bien y te olvidas de compatibilidad entre navegadores.

De todas formas si quieres echar un ojo a lo que hice puedes verlo en....

http://www.tunait.com/pruebas/fotos/error3.htm

No lo pulí más porque me cansé pero por ahí fueron los tiros

saludos
  #14 (permalink)  
Antiguo 30/03/2003, 09:54
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años, 1 mes
Puntos: 0
muchas garcias

es evidente que no se puede confiar en algo así pero de momento voy a guardarmelo y a ver si puedo mejorarlo más adelante.

el problema que tengo es que estas paginas se van a usar tanto en la web como en el pc (offline) y el lenguaje servidor ya no me sirve... pero bueno, lo que has hecho ya está muy bien y me las podré arreglar

gracias por todo
  #15 (permalink)  
Antiguo 31/03/2003, 08:17
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Se me ocurre este ejemplo que tal vez sea demasiado simplón, pero igual sirve...

Se basa en que si la imagen no tiene anchura será porque no existe. Así tomamos ese dato para decidir cuando parar el bucle. Lo malo es que el IE le da un tamaño de 28 px (tal vez sea el tamaño del aspa).

Decidme si sirve...

Código:
<html>
<head>
	<title>Untitled</title>
</head><body>
<script>
var numero=0;
var incremento=1;
var codigo="";
var imagen= new Image();
while(incremento==1)
{
numero++;
imagen.src=numero+".jpg";
if (imagen.width>28){
codigo=codigo+"<img src="+imagen.src+">";
}
else{incremento=0}
}
document.write(codigo);
</script>
</body>
</html>

__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 31/03/2003 a las 10:32
  #16 (permalink)  
Antiguo 31/03/2003, 10:26
 
Fecha de Ingreso: marzo-2003
Mensajes: 119
Antigüedad: 21 años, 1 mes
Puntos: 0
perfecto!

la verdad es que si tienes una imagen menor.... se te desmonta.... pero yo lo necesito para thumbnails de 90 px y me va de perlas!!

gracias! a mi no se me hubiera ocurrido algo tan simple
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 06:01.