Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Fondo que cambie cada día a las 00:00

Estas en el tema de Fondo que cambie cada día a las 00:00 en el foro de Javascript en Foros del Web. Buenos días forer@s . Pregunta : ¿Cómo poner un fondo que cambie cada día a las 00:00 horas , en javascript? Tengo este: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 24/05/2013, 03:45
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Fondo que cambie cada día a las 00:00

Buenos días forer@s.

Pregunta: ¿Cómo poner un fondo que cambie cada día a las 00:00 horas, en javascript?

Tengo este:
Código Javascript:
Ver original
  1. //<![CDATA[
  2. var fondos = ['fondo1.jpg', 'fondo2.jpg', 'fondo3.jpg', 'fondo4.jpg', 'fondo5.jpg', 'fondo6.jpg', 'fondo7.jpg'];
  3. var fondo_actual = 0;
  4. var CambiarFondo = function(){
  5. if (fondo_actual == fondos.length) {
  6. fondo_actual = 0;
  7. }
  8. var precargar =fondo_actual++ % fondos.length;
  9. var precargar2 = precargar+2 % fondos.length;
  10. document.body.style.backgroundImage = 'url('+ fondos[precargar]+ ')';
  11. document.getElementById('precarga').style.backgroundImage =  'url('+fondos[precargar2]+ ')';
  12. }
  13. window.setInterval(CambiarFondo, 60000);    //tiempo medido en milisegundos.
  14. //]]>
Código HTML:
Ver original
  1. <div id="precarga"></div>
pero cambia cada X milisegundos y me gustaría que cambie cada día.

Gracias anticipadas.

Saludos
__________________
· No contesto por M.P.
  #2 (permalink)  
Antiguo 24/05/2013, 08:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Fondo que cambie cada día a las 00:00

eso es porque el interval ejecuta la función cada X milesegundos a partir de ser declarado, si lo pones a X milisegundos que llegue a un día, nunca sucederá porque al recargar la página se pierde el conteo inicial, lo que debes haces es comprobar si la hora es 00:00 y para ello necesitas usar el objeto Date()
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 24/05/2013, 11:42
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Respuesta: Fondo que cambie cada día a las 00:00

Cita:
Iniciado por maycolalvarez Ver Mensaje
eso es porque el interval ejecuta la función cada X milesegundos a partir de ser declarado, si lo pones a X milisegundos que llegue a un día, nunca sucederá porque al recargar la página se pierde el conteo inicial, lo que debes haces es comprobar si la hora es 00:00 y para ello necesitas usar el objeto Date()
Gracias por contestar, @maycolalvarez.

Y ¿Cómo seria eso?. ¿Me puedes poner un ejemplo?.

Ahora lo tengo así para que cambie cada día, pero no cambia:
Código Javascript:
Ver original
  1. //<![CDATA[
  2.  
  3. var fondos = ['fondo1.jpg', 'fondo2.jpg', 'fondo3.jpg', 'fondo4.jpg', 'fondo5.jpg', 'fondo6.jpg', 'fondo7.jpg'];
  4. var fondo_actual = 0;
  5. var CambiarFondo = function(){
  6. if (fondo_actual == fondos.length) {
  7. fondo_actual = 0;
  8. }
  9. var precargar =fondo_actual++ % fondos.length;
  10. var precargar2 = precargar+2 % fondos.length;
  11. document.body.style.backgroundImage = 'url('+ fondos[precargar]+ ')';
  12. document.getElementById('precarga').style.backgroundImage =  'url('+fondos[precargar2]+ ')';
  13. }
  14. window.setInterval(CambiarFondo, 86400000); //tiempo medidos en milisegundos.
  15.                         //Un centisegundo equivale a 10 milisegundos
  16.                         //Un decisegundo equivale a 100 milisegundos.
  17.                         //Un segundo equivale a 1000 milisegundos.
  18.                         //Un minuto equivale a 60000 milisegundos.
  19.                         //Un día equivale a 86400000 milisegundos.
  20.  
  21. //]]>
Muchas gracias.

Saludos.
__________________
· No contesto por M.P.

Última edición por seoista; 24/05/2013 a las 11:48
  #4 (permalink)  
Antiguo 24/05/2013, 17:35
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Fondo que cambie cada día a las 00:00

Javascript se ejecuta en el cliente.

Por lo tanto javascript toma la hora del cliente, para ver los cambios el cliente tendria que estar las 24 horas en tu sitio.

Creo que te conviene una imagen por dia(lunes, martes, etc)

Para eso puedes el metodo
getday http://www.w3schools.com/jsref/jsref_getday.asp

espero te sirva saludos

Tal vez seria mejor que lo hicieras en el lado del servidor si es que son importantes las imagenes por que suele haber usuarios cuyas fechas estan mal

Saludos
  #5 (permalink)  
Antiguo 25/05/2013, 00:25
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Respuesta: Fondo que cambie cada día a las 00:00

Cita:
Iniciado por hackjose Ver Mensaje
Creo que te conviene una imagen por dia(lunes, martes, etc)

Para eso puedes el metodo
getday http://www.w3schools.com/jsref/jsref_getday.asp
¡Es cierto, así lo haré!.

Gracias @hackjose, @maycolalvarez.

Saludos.
__________________
· No contesto por M.P.
  #6 (permalink)  
Antiguo 25/05/2013, 00:25
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Respuesta: Fondo que cambie cada día a las 00:00

Cita:
Iniciado por hackjose Ver Mensaje
Creo que te conviene una imagen por dia(lunes, martes, etc)

Para eso puedes el metodo
getday http://www.w3schools.com/jsref/jsref_getday.asp
Código:
var d=new Date();
var weekday=new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";

var n = weekday[d.getDay()];
Lo siento, pero no me sirve para cambiar de fondo (background... ) cada día una página web. Si para cambiar una imagen o un texto.

Desearía que fuera parecido al JavaScript que puse más arriba, pero que funcione
Código:
var fondos = ['fondo1.jpg', 'fondo2.jpg', 'fondo3.jpg', 'fondo4.jpg', 'fondo5.jpg', 'fondo6.jpg', 'fondo7.jpg'];
var fondo_actual = 0;
var CambiarFondo = function(){
if (fondo_actual == fondos.length) {
fondo_actual = 0;
}
var precargar =fondo_actual++ % fondos.length;
var precargar2 = precargar+2 % fondos.length;
document.body.style.backgroundImage = 'url('+ fondos[precargar]+ ')';
document.getElementById('precarga').style.backgroundImage =  'url('+fondos[precargar2]+ ')';
}
window.setInterval(CambiarFondo, 86400000);	//tiempo medidos en milisegundos.
						//Un centisegundo equivale a 10 milisegundos
						//Un decisegundo equivale a 100 milisegundos.
						//Un segundo equivale a 1000 milisegundos.
						//Un minuto equivale a 60000 milisegundos.
						//(*)UN DÍA EQUIVALE A 86400000 MILISEGUNDOS.
(*) Cómo veis, 86400000 milisegundos equivale a un día, pero no responde, que al comenzar cada día, cambie a un fondo distinto.

Siento ser pesado.

Gracias.
__________________
· No contesto por M.P.

Última edición por seoista; 25/05/2013 a las 03:16
  #7 (permalink)  
Antiguo 25/05/2013, 07:04
 
Fecha de Ingreso: septiembre-2006
Mensajes: 139
Antigüedad: 17 años, 7 meses
Puntos: 14
Respuesta: Fondo que cambie cada día a las 00:00

Yo lo que haría sería al inicio del LOGIN si el usuario se loguea o cuando entre en la web, mediante el evento ready del documento comprobar el día y la hora y así especificar el fondo.

Y para cuando el usuario lleva tiempo en la web usar un timer para que cada cierto tiempo compruebe la misma función.

Saludos cordiales.

Francisco J.
  #8 (permalink)  
Antiguo 25/05/2013, 12:01
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Fondo que cambie cada día a las 00:00

Aqui un pequeño ejemplo
http://jsfiddle.net/XGUTT/

No cambia automaticamente, pero creo que no es necesario.

Si quieres que cambie automaticamente

Podrias usar setInterval o setTimeout

Yo me iria por setTimeout y el tiempo que le pondria seria 23:59 - hora actual del user + 1 segundo

Saludos
  #9 (permalink)  
Antiguo 25/05/2013, 22:28
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Respuesta: Fondo que cambie cada día a las 00:00

Cita:
Iniciado por hackjose Ver Mensaje
Aqui un pequeño ejemplo
http://jsfiddle.net/XGUTT/
Creo que esto es lo que necesito. Lo voy a estudiar, a ver que saco.

Muchas gracias @hackjose .

Gracias también @geofran80.

Saludos .
__________________
· No contesto por M.P.
  #10 (permalink)  
Antiguo 26/05/2013, 01:30
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: Fondo que cambie cada día a las 00:00

Hola Alberto:

Primero deberías obtener la hora actual con el objeto Date(), luego calcularía los milisegundos que faltan para acabar el día, y como ya sabes los milisegundos totales para cambiar de día, ese valor lo pondría luego con setInterval, como ya tenías:

Código HTML:
ahora = new Date();
hora = ahora.getHours();
mins = ahora.getMinutes();
segs = ahora.getSeconds();
faltanSegs = 60 - segs; // para cambiar el minutero
faltanMins = 60 - mins; // para cambiar la hora
faltanHors = 24 - hora; // para el día siguiente
Resta = 86400000 - (faltanHors * 60 * 60 * 1000); // falta restar minutos y segundos...
Resta -= (faltanMins * 60 * 1000); // falta restar los segundos
Resta -= (faltanSegs * 1000); // falta para cambiar de día

setTimeout (function() {CambiarFondo(); setInterval(CambiarFondo, 86400000);}, Resta)
No sé si me habré liado con los entrecomillados y los temporizadores...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 26/05/2013, 03:47
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Respuesta: Fondo que cambie cada día a las 00:00

Hola Pepe, me alegro mucho saludarte. Bastante tiempo sin saber el uno del otro. Del 2 al 7 Mayo, he estado en Roma.

Referente al JavaScript que pones, ¿es correcto como lo estoy combinando?
Código Javascript:
Ver original
  1. var fondos = ["fondo1.jpg","fondo2.jpg","fondo3.jpg","fondo4.jpg","fondo5.jpg","fondo6.jpg","fondo7.jpg"];
  2.  
  3. ahora = new Date();
  4. hora = ahora.getHours();
  5. mins = ahora.getMinutes();
  6. segs = ahora.getSeconds();
  7. faltanSegs = 60 - segs; // para cambiar el minutero
  8. faltanMins = 60 - mins; // para cambiar la hora
  9. faltanHors = 24 - hora; // para el día siguiente
  10. Resta = 86400000 - (faltanHors * 60 * 60 * 1000); // falta restar minutos y segundos...
  11. Resta -= (faltanMins * 60 * 1000); // falta restar los segundos
  12. Resta -= (faltanSegs * 1000); // falta para cambiar de día
  13.  
  14. setTimeout (function() {CambiarFondo(); setInterval(CambiarFondo, 86400000);}, Resta)
  15.  
  16. var fecha = new Date();
  17. var dia = fecha.getDay();
  18.  
  19. document.body.style.backgroundImage = "url(" + fondos[dia] + ")";
Funcionar me funciona. He cambiado de día en el PC y me cambia el fondo de ese día. Creo que va bien. ¿Que te parece?.

Muchas gracias.

Un abrazo.
__________________
· No contesto por M.P.
  #12 (permalink)  
Antiguo 26/05/2013, 03:51
Avatar de seoista  
Fecha de Ingreso: septiembre-2003
Ubicación: Pues leyéndote
Mensajes: 1.076
Antigüedad: 20 años, 7 meses
Puntos: 59
Respuesta: Fondo que cambie cada día a las 00:00

... Lo siento repetido con el de arriba.

Gracias
__________________
· No contesto por M.P.
  #13 (permalink)  
Antiguo 26/05/2013, 05:17
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: Fondo que cambie cada día a las 00:00

Hola:

Cita:
Iniciado por seoista Ver Mensaje
...
Creo que va bien. ¿Que te parece?.
...
Tendrás que contestarte tú mismo, probando a dejar la página abierta durante algunos días ¡Ja, ja!... el primer temporizador puedes probarlo modificando la hora del sistema como parece que ya has hecho, pero el resto no sabría decirte...

Tal vez haya alguna forma de probarlo usando valores más pequeños.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: cada
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 04:50.