Imágenes construidas con un loop en javascript y número total de ellas en las carpetas

Tengo una tira de imágenes que se construye con un loop:
var imagen=1
while(total<=imagen)
{
var carpeta= obtener_valor("carpeta");
var img= new Image();
img.src=""+carpeta+"/"+imagen+".jpg";
document.write ("<img src="+img.src+">");
imagen++;
}
Saco las imágenes de carpetas diferentes (el nombre de la carpeta escrito en un formulario get) y el script debe averiguar en cada caso cuantas imágenes hay en la carpeta.
Como creo que eso con javascript no se puede saber he pensado precargar imágenes en head (con un loop) y a la que una de esas imágenes dé onerror pare el loop y establezca el numero de imagen como "total".
mi idea seria esta:
<script>
var imagen=1;
while(error=false)
{
var carpeta= obtener_valor("carpeta");
var img= new Image();
img.src=""+carpeta+"/"+imagen+".jpg";
img.onerror=error(imagen);
imagen++;
}
function error(numero)
{
error=yes;
total=numero
}
</script>
Pero no me funciona...
¿Cómo lo puedo hacer para que sí funcione?

2 Respuestas

Respuesta
1
Te comento que la principal raon por la que no te funciona, en principio es porque no tienes bien declarada la condición del while en el código.
Sustituye
while(error=false)
por
while(error==false)
Ya veras como te funciona.
Nad más.
Respuesta
1
La verdad es que no le veo pegas a tu codigo... salvo que en el while pones "error=false" en lugar de "error==false"... OJO A ESTO!!
La diferencia es gorda, porque mientras que la primera es una asignación, la segunda es una comparación!
Si este no es tu error, este código parece funcionar:
<script language="JavaScript"><!--
var myImage =new Image();
myImage.onerror = myError;
myImage.src = 'http:///www.somewhere.com/remoteimage.gif';
function myError() {
myImage.src = 'localimage.gif';
}
//--></script>
Aunque lo veo muy parecido a tu código... salvo que el onerror se pone ANTES de cargar la imagen.
Si no es ninguna de estas dos cosas, preguntame de nuevo y buscare más.
He probado cambiando "error=false" por "error==false" pero nada.
Después de probar muchas combinaciones y mirando el código que me diste, he llegado a la conclusión que si la sentencia que permite que se pare el loop se encuentra fuera de este (en una función, por ejemplo) no lo lee hasta que no acaba el loop por lo que éste se prolonga infinitamente y no sirve de nada.
He visto por ahí algo de sentencia break, para romper el bucle... lo he probado, pero nada.
Con tener algo así me sirve:
while (nada)
{
var imagen= New Image();
image.src= noseque.gif
image.onerror=DETENER BUCLE
}
Espero que puedas ayudarme.
Probemos a cambiar un poco la estructura típica del while...
Probemos:
while(cargar());
function cargar(){
Var myImage =new Image();
myImage.onerror=return false;
myImage.src='remoteimage.gif';
return true;
}
No tengo claro del todo si ese onerror funcionara, pero a lo mejor así cuela. La idea es que si se carga bien la imagen, se retorna true y el ciclo while sigue; por el contrario, si la carga falla, se retorna false y se para.
Mira a ver si puedes hacer algo con esta nueva visión del problema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas