Foros del Web » Programando para Internet » Javascript »

Función que muestra Imágenes Aleatorias pero...

Estas en el tema de Función que muestra Imágenes Aleatorias pero... en el foro de Javascript en Foros del Web. Muy buenas. Voy a completar el título del tema antes de plantear mi duda: "Función que muestra Imágenes Aleatorias pero que no muestre la misma ...
  #1 (permalink)  
Antiguo 30/10/2009, 16:18
Avatar de Hayi  
Fecha de Ingreso: febrero-2002
Ubicación: Santa Fe - Santa Fe
Mensajes: 121
Antigüedad: 22 años, 9 meses
Puntos: 3
Pregunta Función que muestra Imágenes Aleatorias pero...

Muy buenas. Voy a completar el título del tema antes de plantear mi duda:

"Función que muestra Imágenes Aleatorias pero que no muestre la misma al invocarla 2 veces."

Me explico mejor ahora, tengo la siguiente función que me muestra en forma aleatoria 12 imágenes:

Código:
function ImagenAleatoria() {

var num = Math.floor(Math.random()*11)+1;
listado = new Array("0","1","2","3","4","5","6","7","8","9","10","11");

document.write('<P><IMG SRC="img_aleatorias/img_aleatoria'+ parseInt(listado[num]) +'.jpg" BORDER="0"></P>');
}
(parte del HTML...)
Código HTML:
...
<SCRIPT>ImagenAleatoria()</SCRIPT>
...
Hasta acá, todo perfecto, me muestra una imagen distinta cada vez que se refresca la página (en principio es lo que necesito, al final plantearé una nueva duda en base a esto...) pero, si bien no es siempre, si quiero llamar 2 veces a la función 'ImagenAleatoria()' tengo un porcentaje de posibilidad que se muestre la misma imagen 2 veces...

Ésta es la duda principal: ¿cómo hago para que no pase esto sin tener que usar una nueva función?

Duda Secundaria: ¿Cómo puedo usar esta función para que 'refresque' las imágenes sin tener que refrescar la página?

Gracias desde ya y espero al menos que les pueda servir de utilidad esa función para lo que necesiten... Saludos.
  #2 (permalink)  
Antiguo 30/10/2009, 17:06
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Función que muestra Imágenes Aleatorias pero...

Hola

Se me ocurre esto

Código javascript:
Ver original
  1. var num = Math.floor(Math.random()*11)+1;
  2. var num2 = Math.floor(Math.random()*11)+1;
  3. if (num == num2) num2 = (num2-1)
  4. if (num2 == 0 && num < 11) num2 = (num+1)
  5. alert(num + " " + num2);

En cuento a cambiar las imágenes sin recargar la página puedes usar DOM o AJAX

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 30/10/2009, 19:26
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Función que muestra Imágenes Aleatorias pero...

a mi se me ocurre una alternativa diferente. en lugar de buscar dos numeros aleatorios, barajar una sola vez el orden del array. luego usas dos posiciones distintas del array, las que tu quieras. de modo que las probabilidades que se repitan, siempre van a ser nulas.
Código:
var listado = [/* tu array con rutas a imagenes o la informacion que fuera */];
// barajar el orden;
listado.sort(function(){return Math.round(Math.random()) - .5;});
function ImagenAleatoria(num) {
document.write('<P><IMG SRC="img_aleatorias/img_aleatoria'+ listado[num] +'.jpg" BORDER="0"></P>');
}
en cada llamada le pasas como parametro un numero diferente, teniendo como limite la longitud del array.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 30/10/2009, 19:50
Avatar de Hayi  
Fecha de Ingreso: febrero-2002
Ubicación: Santa Fe - Santa Fe
Mensajes: 121
Antigüedad: 22 años, 9 meses
Puntos: 3
Respuesta: Función que muestra Imágenes Aleatorias pero...

Muchas gracias a ambos, las soluciones planteadas solucionan mi problema. Adler, algo similar se me había ocurrido pero no daba en la tecla. zerokilled, excelente aporte pero te confieso que no lo ubiera hecho así nunca, jajaja.

Reitero las gracias a ambos por las molestias tomadas para responderme... ¡Saludos!
  #5 (permalink)  
Antiguo 04/11/2009, 02:30
 
Fecha de Ingreso: septiembre-2009
Mensajes: 10
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Función que muestra Imágenes Aleatorias pero...

yo tambien ando con un problemilla de este estilo. necesito que alguien me aconseje.

solo comentaros si conoceis algun metodo para lo siguiente:
quiero conseguir algo usando javascript.
mi idea es que en el index aparezcan tres imagenes diferentes en 3 celdas diferentes cada vez que se entra o se actualice la pagina.
el codigo es el siguiente:
<html>
</html>
<head>
</head>
<script>

rnd.today=new Date();
rnd.seed=rnd.today.getTime();
AImages=[
"foto1.jpg",
"foto2.jpg"
"foto3.jpg",
]
function rnd() {
rnd.seed = (rnd.seed*9301+49297) % 233280;
return rnd.seed/(233280.0);
};

function rand(number) {
var n=Math.ceil(rnd()*number);
document.getElementById("a").src=AImages[n-1]
};

</script>

El apartado de la otra imagen seria lo mismo con su <script></script> correspondiente, pero cogiendo las imagenes de la carpeta que le corresponde y de la tercera imagen otro tanto con su <script > </script > correspondiente y sus imagenes.
luego en el body en la celda donde quiero aparecer la imagen pongo lo siguiente:
<td width="33%" align="center" valign="top"><img src="(nombre de la carpeta general donde esta las fotos)" id="(el nombre del getElementById) que le he dado arriba"></td>
cada una de las imagenes con su< td></td> en el body. Supongo que tendría que salir pero solo consigo que salga una de ellas y si pongo en comentario dos de ellas me sale la que no esta en comentario ¿podrías abrirme los ojos para ver donde fallo?
Gracias.
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 18:32.