Foros del Web » Programando para Internet » Javascript »

Imagen aleatoria?

Estas en el tema de Imagen aleatoria? en el foro de Javascript en Foros del Web. Hola, tengo un script que cada hora me enseña una imagen diferente, el problema es que a las 00:00 me enseña la imagen 0.png, a ...
  #1 (permalink)  
Antiguo 21/10/2014, 13:01
 
Fecha de Ingreso: agosto-2014
Mensajes: 294
Antigüedad: 9 años, 7 meses
Puntos: 4
Imagen aleatoria?

Hola, tengo un script que cada hora me enseña una imagen diferente, el problema es que a las 00:00 me enseña la imagen 0.png, a las 01:00 me enseña la imagen 1.png y a las 23:00 me enseña la imagen 23.png..

mi pregunta es como tendria que hacer para poder alterar las imagenes? aqui dejo el codigo:

Código HTML:
<html>
<head>
<script>
function cargarImagen(){
ahora=new Date();
hora=ahora.getHours();
imagen="http://chatopcionesbinarias.vv.si/senales/Numeros/"+hora+".png";
document.images["reloj"].src=imagen;
}
</script>
	<title>Carga Imagen Por Hora</title>
</head>

<body onload="cargarImagen()">
<img src="img/1.jpg" name="reloj">

</body>
</html> 

Habia pensado poner más imagenes con mas numeros como 24, 25, 26 pero como el scrip fue diseñado para que la hora se corresponda con la imagen ni las ve...


Cualquier consejo es de gran ayuda! ya que me he metido un palizon con eso

Gracias y +1
  #2 (permalink)  
Antiguo 21/10/2014, 13:14
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Imagen aleatoria?

¿Te refieres a tomar aleatoriamente una de las 24 imágenes? Pues, podrías tomar un número aleatorio en el rango de 0 y 24 y así muestras la imagen correspondiente, para lo cual necesitarás utilizar las funciones Math.random y Math.floor.

Código Javascript:
Ver original
  1. //Creo el rango de 0 a 24
  2. for (var i = 0, rango = []; i < 24; rango.push(i), i++);
  3.  
  4. //Tomo aleatoriamente uno de los índices del rango
  5. var indice = Math.floor(Math.random() * rango.length);
  6.  
  7. //Muestro el valor correspondiente al índice seleccionado
  8. console.log("Valor aleatorio: " + rango[indice]);

Ya teniendo el valor aleatorio, puedes hacer con él lo que mejor creas conveniente.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 21/10/2014 a las 14:04 Razón: Se me pasó un número.
  #3 (permalink)  
Antiguo 21/10/2014, 13:33
 
Fecha de Ingreso: agosto-2014
Mensajes: 294
Antigüedad: 9 años, 7 meses
Puntos: 4
Respuesta: Imagen aleatoria?

Cita:
Iniciado por Alexis88 Ver Mensaje
¿Te refieres a tomar aleatoriamente una de las 24 imágenes? Pues, podrías tomar un número aleatorio en el rango de 0 y 24 y así muestras la imagen correspondiente, para lo cual necesitarás utilizar las funciones [URL="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random"][inline]Math.random[/inline][/URL] y [URL="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math/floor"][inline]Math.floor[/inline][/URL].

Código Javascript:
Ver original
  1. //Creo el rango de 0 a 24
  2. for (var i = 0, rango = []; i < 25; rango.push(i), i++);
  3.  
  4. //Tomo aleatoriamente uno de los índices del rango
  5. var indice = Math.floor(Math.random() * rango.length);
  6.  
  7. //Muestro el valor correspondiente al índice seleccionado
  8. console.log("Valor aleatorio: " + rango[indice]);

Ya teniendo el valor aleatorio, puedes hacer con él lo que mejor creas conveniente.

Saludos

Muchas Gracias!!!!

Soy algo gafe con javascript.. recien me inicio.. lo que intente es añadirlo tal cual a mi codigo... y no ha funcionado como era de esperar

como podria vincular los dos codigos sin morir en el intento?

Gracias de nuevo! +1


Código HTML:
//Creo el rango de 0 a 24
for (var i = 0, rango = []; i < 25; rango.push(i), i++);
 
//Tomo aleatoriamente uno de los índices del rango
var indice = Math.floor(Math.random() * rango.length);
 
//Muestro el valor correspondiente al índice seleccionado
console.log("Valor aleatorio: " + rango[indice]);

function cargarImagen(){
ahora=new Date();
hora=ahora.getHours();
imagen=&quot;http://chatopcionesbinarias.vv.si/senales/Numeros/&quot;+hora+&quot;.png&quot;;
document.images[&quot;reloj&quot;].src=imagen;
}

 
  #4 (permalink)  
Antiguo 21/10/2014, 13:52
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Imagen aleatoria?

no tiene sentido intentar fusionar esos dos códigos. mientras que uno toma la hora local y arreglo a ella muestra una imagen. el otro saca un número aleatorio entre el rango 0-23

tomando tus otros post creo que lo que intentas es que a cada hora tome un elemento aleatorio sin repetición
Código:
var img=[0,1,2,3,4,5,6,7,8,9,10];

function shuffle(i){        
    i=(i<0)?Math.floor(Math.random()*img.length):(i+Math.floor(Math.random()*(img.length-1)+1))%img.length;
    console.log(img[i]);
    
    setTimeout(function(){shuffle(i);},5000);
}
        
shuffle(-1);
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 21/10/2014, 14:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Imagen aleatoria?

Cita:
Iniciado por yopmail Ver Mensaje
como podria vincular los dos codigos sin morir en el intento?
Mas que fusionar, se trata de adaptar.

Código Javascript:
Ver original
  1. var rango = []; //El array que almacenará el rango de 0 a 24
  2. for (var i = 0; i < 24; rango.push(i), i++); //Creo el rango de 0 a 24
  3.  
  4. function cargarImagen(){
  5.     //Tomo aleatoriamente uno de los índices del rango
  6.     var indice = Math.floor(Math.random() * rango.length);
  7.  
  8.     //Muestro el valor correspondiente al índice seleccionado
  9.     document.images["reloj"].src = "http://chatopcionesbinarias.vv.si/senales/Numeros/" + rango[indice] + ".png";
  10. }

De esta manera, tomas una imagen aleatoria entre el 0 y el 23 y la muestras en el elemento 'reloj'.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 21/10/2014, 14:11
 
Fecha de Ingreso: agosto-2014
Mensajes: 294
Antigüedad: 9 años, 7 meses
Puntos: 4
Respuesta: Imagen aleatoria?

Gracias Isabel por siempre intentar ayudar! lo que intento lograr es que a las :00 cambie de imagen.. pero ademas alterar o desvincular que a las 23:00 salga la imagen 23.png.. que eso fuese mas aleatorio... me imagino que es algo complejo y lo recomendable seria ir diectamente con un programador cualificado?


Gracias de nuevo! de gran ayuda como siempre +1

Cita:
Iniciado por IsaBelM Ver Mensaje
no tiene sentido intentar fusionar esos dos códigos. mientras que uno toma la hora local y arreglo a ella muestra una imagen. el otro saca un número aleatorio entre el rango 0-23

tomando tus otros post creo que lo que intentas es que a cada hora tome un elemento aleatorio sin repetición
Código:
var img=[0,1,2,3,4,5,6,7,8,9,10];

function shuffle(i){        
    i=(i<0)?Math.floor(Math.random()*img.length):(i+Math.floor(Math.random()*(img.length-1)+1))%img.length;
    console.log(img[i]);
    
    setTimeout(function(){shuffle(i);},5000);
}
        
shuffle(-1);
  #7 (permalink)  
Antiguo 21/10/2014, 14:16
 
Fecha de Ingreso: agosto-2014
Mensajes: 294
Antigüedad: 9 años, 7 meses
Puntos: 4
Respuesta: Imagen aleatoria?

Muchas Gracias Alexis funciona de maravilla! el único problema que surge ahora es que no cambia de imagen a las :00 si no lo hace a refrescar la página, quiero decir que no queda 1 hora estática la imagen! por lo cual no servirio pero muchas gracias!
  #8 (permalink)  
Antiguo 21/10/2014, 14:18
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Imagen aleatoria?

ya te está ayudando un programador cualificado, Alexis88

tendrás que desarrollar más la idea. al menos yo no comprendo que quieres hacer realmente

edito.- como te comenté en un post anterior has de usar temporizadores
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #9 (permalink)  
Antiguo 21/10/2014, 14:23
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Imagen aleatoria?

Tendrás que especificar una condición que ejecute las instrucciones de la función cuando la hora sea exacta, es decir, como bien dices, cuando los minutos sean "00".

Código Javascript:
Ver original
  1. //Creo el rango de 0 a 24
  2. var rango = [];
  3. for (var i = 0; i < 24; rango.push(i), i++);
  4.  
  5. function cargarImagen(){
  6.     if (!new Date().getMinutes()){ //0 equivale a false
  7.         //Tomo aleatoriamente uno de los índices del rango
  8.         var indice = Math.floor(Math.random() * rango.length);
  9.  
  10.         //Muestro el valor correspondiente al índice seleccionado
  11.         document.images["reloj"].src = "http://chatopcionesbinarias.vv.si/senales/Numeros/" + rango[indice] + ".png";  
  12.     }
  13. }

Y, como bien te dice IsaBelM, tendrás que hacer uso de temporizadores para ejecutar la función cada cierto tiempo y realizar la comprobación de los minutos.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 21/10/2014 a las 21:35 Razón: Fe de erratas
  #10 (permalink)  
Antiguo 21/10/2014, 14:59
 
Fecha de Ingreso: agosto-2014
Mensajes: 294
Antigüedad: 9 años, 7 meses
Puntos: 4
Respuesta: Imagen aleatoria?

Cita:
Iniciado por Alexis88 Ver Mensaje


Cita:
Iniciado por IsaBelM Ver Mensaje

Muchas Gracias a los dos! con los datos que me aveis dado voy a probar de lograr el efecto deseado! :)


Etiquetas: html
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 02:26.