Foros del Web » Programando para Internet » Javascript »

Cambiar Background Dinamicamente

Estas en el tema de Cambiar Background Dinamicamente en el foro de Javascript en Foros del Web. Buenas! yo estoy utilizando este codigo para cambiar de .css dinamicamente, lo que hace es que cada vez que apreto un boton, se cambie el ...
  #1 (permalink)  
Antiguo 29/10/2010, 13:05
 
Fecha de Ingreso: noviembre-2008
Mensajes: 130
Antigüedad: 15 años, 5 meses
Puntos: 0
Exclamación Cambiar Background Dinamicamente

Buenas! yo estoy utilizando este codigo para cambiar de .css dinamicamente, lo que hace es que cada vez que apreto un boton, se cambie el css, ahora lo que quiero hacer es que nada mas se modifique el fondo, osea que use unas imagenes que tienen numero del 1 a 50 y se repita este fondo, el codigo que tengo es el siguiente,


<script type="text/javascript">
function rand(min, max){
var argc = arguments.length;
if(argc == 1){
min = 1;
max = 2147483647;
}else if(argc == 1){
return "Warning: rand() expects exactly 2 parameters, 1 given";
}
return Math.floor((Math.random() * (max - min + 1)) + min);
}

function change(){
aleatorio = rand(1, 29);
document.getElementById("back_change").rel = '../../css/backgrounds/' + aleatorio + '.css';
}
</script>


ahora lo que yo quiero es que en vez de usar el css, directamente se escriba en la web un estilo como el siguiente:

<style>
body{
background: url(../../images/backgrounds/'aleatorio'.gif) repeat;
}
</style>

Alguien me puede ayudar? MIL GRACIAS!
  #2 (permalink)  
Antiguo 29/10/2010, 14:18
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 19 años, 7 meses
Puntos: 9
Respuesta: Cambiar Background Dinamicamente

Hola.

Puedes hacerlo directamente en el script. Por ejemplo, si las imagenes tienen nombre de archivo de la forma : numero.gif

function change(){
aleatorio = rand(1, 29);
var image = aleatorio+"gif";
document.getElementById("back_change").style.backg roundImage="url("+aleatorio+"gif)";

}
  #3 (permalink)  
Antiguo 29/10/2010, 14:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 130
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Cambiar Background Dinamicamente

@sysmadryn, no me funciona, yo tengo las imagenes en /../../images/backgrounds, le cambie la direccion y tampoco funciona :S
  #4 (permalink)  
Antiguo 29/10/2010, 14:53
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 19 años, 7 meses
Puntos: 9
Respuesta: Cambiar Background Dinamicamente

Hola.

Al codigo que puse le falta un punto antes de "gif" :

document.getElementById("back_change").style.backg roundImage="url("+aleatorio+".gif)";

Por lo demas deberia funcionar.
Si puedes copia el mensaje de error que te sale.

Saludos
  #5 (permalink)  
Antiguo 29/10/2010, 15:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 130
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Cambiar Background Dinamicamente

No cambia el fondo, no muestra ningun error

document.getElementById("back_change").style.backg roundImage="url(../../images/backgrounds/"+aleatorio+".gif)";

Este es el codigo que estoy usando :S
  #6 (permalink)  
Antiguo 29/10/2010, 15:45
 
Fecha de Ingreso: noviembre-2008
Mensajes: 130
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Cambiar Background Dinamicamente

Osea, yo lo que quiero hacer es cambiar el color del Body, de la web entera :S
  #7 (permalink)  
Antiguo 29/10/2010, 15:55
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cambiar Background Dinamicamente

Vamos a ver, voy a copiar tu código y lo analizamos:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function rand(min, max){
  3. var argc = arguments.length;
  4. if(argc == 1){
  5. min = 1;
  6. max = 2147483647;
  7. }else if(argc == 1){
  8. return "Warning: rand() expects exactly 2 parameters, 1 given";
  9. }
  10. return Math.floor((Math.random() * (max - min + 1)) + min);
  11. }
  12.  
  13. function change(){
  14. aleatorio = rand(1, 29);
  15. document.getElementById("back_change").rel = '../../css/backgrounds/' + aleatorio + '.css';
  16. }
  17. </script>
#2: A las funciones en las que el número de argumentos es variable no se les pasa ninguno (function rand()).
#6: ¿ max = 2147483647; ? Entonces no hace falta pasarle argumento, tendrías que llamarla como rand(), pero entonces habría 0 argumentos y no entraría en el if
#7: Si hay 1 argumento [...], si no y hay ¿1? . No tiene sentido.
#14: Si por defecto cuando sólo le pasas un argumento min es 1, ¿para qué le pasas 2?
#15: El rel de un elemento (aquí igual meto la pata xD) se usa para declarar qué relación tiene lo que va a traer ese elemento con el mismo. Ej: <link rel='stylesheet' ... />, porque lo que va a traer el link es una hoja de estilos. Por tanto no tiene sentido usar el rel para modificar la url, usa href porque me imagino que será un link.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #8 (permalink)  
Antiguo 29/10/2010, 16:01
 
Fecha de Ingreso: noviembre-2008
Mensajes: 130
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Cambiar Background Dinamicamente

gracias por las correcciones _cronos, pero como cambiaria el codigo para que en vez de traer esas horas de estilo, pueda modificar el background del body directamente, asi no tengo que tener 50 hojas de estilo y que se carguen cada vez que toco el boton, osea yo lo que quiero modificar es que directamente pueda escribir en la web por asi decirlo:

"<style>
body{
background: url(../../images/backgrounds/'aleatorio'.gif) repeat;
}
</style>"

Asi me ahorro que tenga que traer cada vez que pulso el boton un archivo css, busca las imagenes randon en la carpeta y las aplica de fondo del body...Cualquier consulta no dudes :D
  #9 (permalink)  
Antiguo 29/10/2010, 16:35
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cambiar Background Dinamicamente

Bueno, esta vez yo creo que es bastante más fácil que la anterior vez xD. Prueba así:
Código Javascript:
Ver original
  1. function rand(){
  2.  var argc = arguments.length, min, max;
  3.  switch(argc){
  4.   case 0:
  5.    min=1;
  6.    max=2;
  7.   break;
  8.   case 1:
  9.    min = 1;
  10.    max=arguments[0];
  11.   break;
  12.   default:
  13.    min=arguments[0];
  14.    max=arguments[1];
  15.   break;
  16.  }
  17.  return Math.round(Math.random() * (max - min) + min);
  18. }
  19. function change(){
  20.  document.body.style.backgroundImage='url(/../../images/backgrounds/'+rand(50)+'.gif)';
  21. }
Código HTML:
Ver original
  1. <button onclick='change();'>Cambiar imagen</button>
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 29/10/2010, 17:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 130
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Cambiar Background Dinamicamente

Gracias _Cronos2, yo utilizo el siguiente codigo para que se guarden en los cookies el backrogrun elejido por el usuario, como puedo modificarlo para que guarde en vez del .css, la imagen elejida?

<script>
if($.cookie("css")) {
$("link").attr("href",$.cookie("css"));
}
$(document).ready(function() {
$("#back_change").click(function() {
$("link").attr("href",$(this).attr('rel'));
$.cookie("css",$(this).attr('rel'), {expires: 365, path: '/'});
return false;
});
});
</script>

Gracias!
  #11 (permalink)  
Antiguo 30/10/2010, 15:55
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Cambiar Background Dinamicamente

Más o menos, por intuición del código jQuery, lo que haces es cambiar el rel del link según la cookie y cambiar la cookie con el rel del div, pero ahora lo difícil está en coger la imagen de fondo del body. Prueba con esto, pero no sé si funcionará:
Código Javascript:
Ver original
  1. function change(){
  2.  return 'background:url(/../../images/backgrounds/'+rand(50)+'.gif)';
  3. }
  4. if($.cookie("img")) {
  5. $("body").attr("style",$("body").attr("style")+$.cookie("img"));
  6. }
  7. $(document).ready(function() {
  8. $("#back_change").click(function() {
  9. var img=$("body").attr("style")+change();
  10. $("body").attr("style", img);
  11. $.cookie("img",img, {expires: 365, path: '/'});
  12. return false;
  13. });
  14. });
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Etiquetas: dinamico, fondo
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 20:36.