Foros del Web » Programando para Internet » Javascript »

Cambio de color dinamicamente

Estas en el tema de Cambio de color dinamicamente en el foro de Javascript en Foros del Web. Hola a todos, les agradezco cualquier colaboracion o sugerencia que me puedan ofrecer. Estoy haciendo un pequeño script en PHP con algo de Javascript para ...
  #1 (permalink)  
Antiguo 11/12/2012, 16:38
 
Fecha de Ingreso: julio-2012
Ubicación: Colombia
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 0
Cambio de color dinamicamente

Hola a todos, les agradezco cualquier colaboracion o sugerencia que me puedan ofrecer.

Estoy haciendo un pequeño script en PHP con algo de Javascript para que sea mas dinamico.

El script se compone de 3 capas (contenedores), las cuales cambian de color (de blanco a amarillo) cuando el raton pasa sobre ellas.

Cada capa (contenedor) tiene dos botones (funciones javascript), una para maximizar la capa (contenedor) y otro para minimizar la capa (contenedor).

Cuando la capa (contenedor) se maximiza cambia de color (de blanco a amarillo).
Cuando la capa (contenedor) se minimiza vuelve a su color original (de amarillo a blanco).

El problema que tengo, es que cuando minimizo capa (contenedor) y vuelvo a pasar sobre la capa el raton (contenedor), el efecto de cambiar de color no tiene ningun efecto.


El codigo es este:

Código HTML:
Ver original
  1.  
  2.  
  3. <style type="text/css">
  4.  
  5. .contenedor {
  6. width: 350px;
  7. height: 100px;
  8. margin-top: 5px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px;
  9. background: white;
  10. border: 1px solid green;
  11. }  
  12.  
  13. .contenedor:hover {
  14. background-color: #FFFFDD;
  15. }
  16.  
  17. </style>
  18.  
  19. <script type="text/javascript">
  20.        
  21. function maximizar_contenedor(caja)
  22. {
  23.  document.getElementById(caja).style.height="200px";
  24.  document.getElementById(caja).style.backgroundColor='#FFFFDD';
  25. }
  26.  
  27. function minimizar_contenedor(caja)
  28. {
  29.  document.getElementById(caja).style.height="100px";
  30.  document.getElementById(caja).style.backgroundColor='#FFFFFF';
  31. }
  32.  
  33.  
  34. </head>
  35.  
  36.  
  37. <div class="contenedor" id="caja1">
  38.  <div><a id="boton1" href="javascript:maximizar_contenedor('caja1')">Maximizar</a></div>
  39.  <div><a id="boton1" href="javascript:minimizar_contenedor('caja1')">Minimizar</a></div>
  40. </div>
  41.  
  42. <div class="contenedor" id="caja2">
  43.  <div><a id="boton1" href="javascript:maximizar_contenedor('caja2')">Maximizar</a></div>
  44.  <div><a id="boton1" href="javascript:minimizar_contenedor('caja2')">Minimizar</a></div>
  45. </div>
  46.  
  47. <div class="contenedor" id="caja2">
  48.  <div><a id="boton1" href="javascript:maximizar_contenedor('caja3')">Maximizar</a></div>
  49.  <div><a id="boton1" href="javascript:minimizar_contenedor('caja3')">Minimizar</a></div>
  50. </div>
  51.  
  52.  
  53. </body>
  54. </html>


De antemano gracias por la ayuda.
  #2 (permalink)  
Antiguo 12/12/2012, 02:13
 
Fecha de Ingreso: septiembre-2012
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Cambio de color dinamicamente

Lo mejor es trabajarlo todo con Javascript, remueve la regla css hover. y agrega este script despues del body.

Código Javascript:
Ver original
  1. (function(){
  2.  
  3.     var nodes = document.getElementsByTagName('body')[0].childNodes;
  4.  
  5.     for(node in nodes){
  6.  
  7.         if(nodes[node].className == 'contenedor'){
  8.  
  9.                 nodes[node].onmouseover = function(){this.style.backgroundColor = '#FFFFDD'; };
  10.             nodes[node].onmouseout = function(){ this.style.backgroundColor = '#FFFFFF'; };
  11.         }
  12.     }
  13.  
  14. })();

Obtiene todos los divs con la clase contenedor y les asigna una funcion a los eventos onmouseover y onmouse out. cambiando el color de fondo.
  #3 (permalink)  
Antiguo 12/12/2012, 14:32
 
Fecha de Ingreso: julio-2012
Ubicación: Colombia
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Cambio de color dinamicamente

axsys, gracias por tu tiempo

Hice lo que me sugeriste:

Quite el hover y agregue la funcion en el body.

cuando maximizo cualquier contenedor cambia de color y cuando lo minimizo vuelve a su color original, pero cuando pasa el raton sobre los contenedores no pasa ningun efecto, como si lo tenia antes
  #4 (permalink)  
Antiguo 12/12/2012, 15:35
 
Fecha de Ingreso: septiembre-2012
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 4
Respuesta: Cambio de color dinamicamente

mm, que raro, a mi me funciona en firefox, chrome e IE, el codigo completo deberia de ser este:

Código HTML:
Ver original
  1.  
  2.  
  3. <style type="text/css">
  4.  
  5. .contenedor {
  6. width: 350px;
  7. height: 100px;
  8. margin-top: 5px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px;
  9. background: white;
  10. border: 1px solid green;
  11. }  
  12.  
  13. </style>
  14.  
  15. <script type="text/javascript">
  16.        
  17. function maximizar_contenedor(caja)
  18. {
  19.  document.getElementById(caja).style.height="200px";
  20.  document.getElementById(caja).style.backgroundColor='#FFFFDD';
  21. }
  22.  
  23. function minimizar_contenedor(caja)
  24. {
  25.  document.getElementById(caja).style.height="100px";
  26.  document.getElementById(caja).style.backgroundColor='#FFFFFF';
  27. }
  28.  
  29.  
  30.  
  31.  
  32. </head>
  33.  
  34.  
  35. <div class="contenedor" id="caja1">
  36.  <div><a id="boton1" href="javascript:maximizar_contenedor('caja1')">Maximizar</a></div>
  37.  <div><a id="boton1" href="javascript:minimizar_contenedor('caja1')">Minimizar</a></div>
  38. </div>
  39.  
  40. <div class="contenedor" id="caja2">
  41.  <div><a id="boton1" href="javascript:maximizar_contenedor('caja2')">Maximizar</a></div>
  42.  <div><a id="boton1" href="javascript:minimizar_contenedor('caja2')">Minimizar</a></div>
  43. </div>
  44.  
  45. <div class="contenedor" id="caja3">
  46.  <div><a id="boton1" href="javascript:maximizar_contenedor('caja3')">Maximizar</a></div>
  47.  <div><a id="boton1" href="javascript:minimizar_contenedor('caja3')">Minimizar</a></div>
  48.  <div style="width:40px; height:40px; background: black;"></div>
  49. </div>
  50.  
  51.  
  52. </body>
  53.  
  54. <script type="text/javascript">
  55.  
  56. (function(){
  57.  
  58.     var nodes = document.getElementsByTagName('body')[0].childNodes;
  59.  
  60.     for(node in nodes){
  61.  
  62.         if(nodes[node].className == 'contenedor'){
  63.  
  64.             nodes[node].onmouseover = function(){ this.style.backgroundColor = '#FFFFDD'; };
  65.             nodes[node].onmouseout = function(){ this.style.backgroundColor = '#FFFFFF'; };
  66.         }
  67.     }
  68.  
  69. })();
  70.  
  71.  
  72. </html>
  #5 (permalink)  
Antiguo 12/12/2012, 17:37
 
Fecha de Ingreso: julio-2012
Ubicación: Colombia
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Cambio de color dinamicamente

axsys, probe lo que me sugeriste

Con lo que me sugieres se soluciono el problema, pero me aparecio un problema que no tenia y que me funcionaba bien. Cuando maximizo una capa (cambia de color) y quito el mouse de dicha capa no mantiene el color, como si lo hacia antes. Le e hecho varios modificaciones despues de tu sugerencia pero no me funciona esta parte.
  #6 (permalink)  
Antiguo 12/12/2012, 17:54
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cambio de color dinamicamente

no añadas css en línea siempre que te sea posible. usa la propiedad className
Cita:
<html>

<head>

<style type="text/css">
.contenedor, .contenedormax {
width: 350px;
margin-top: 5px; margin-right: 0px; margin-bottom: 3px; margin-left: 0px;
background: white;
border: 1px solid green;
}


.contenedor {
background-color: #FFFFFF;
height: 100px;
}


.contenedormax {
background-color: #FFFFDD;
height: 200px;
}


.contenedor:hover {
background-color: #FFFFDD;
}

</style>

<script type="text/javascript">

function maximizar_contenedor(caja)
{
document.getElementById(caja).className = 'contenedormax';
}

function minimizar_contenedor(caja)
{
document.getElementById(caja).className = 'contenedor';
}

</script>

</head>

<body>

<div class="contenedor" id="caja1">
<div><a id="boton1" href="javascript:maximizar_contenedor('caja1')">Ma ximizar</a></div>
<div><a id="boton1" href="javascript:minimizar_contenedor('caja1')">Mi nimizar</a></div>
</div>

<div class="contenedor" id="caja2">
<div><a id="boton1" href="javascript:maximizar_contenedor('caja2')">Ma ximizar</a></div>
<div><a id="boton1" href="javascript:minimizar_contenedor('caja2')">Mi nimizar</a></div>
</div>

<div class="contenedor" id="caja2">
<div><a id="boton1" href="javascript:maximizar_contenedor('caja3')">Ma ximizar</a></div>
<div><a id="boton1" href="javascript:minimizar_contenedor('caja3')">Mi nimizar</a></div>
</div>


</body>
</html>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 12/12/2012, 18:35
 
Fecha de Ingreso: julio-2012
Ubicación: Colombia
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Cambio de color dinamicamente

IsaBelM, probe tu sugerencia y me funciono perfecto como yo queria. Mil gracias

Quede con una duda. Para modificar una caracteristica de un elemento yo utilizo por ejemplo document.getElementById().style.height=, nunca antes habia visto o utilizado la instruccion document.getElementById(caja).className. No entendi como funciona.

Yo soy mas bien nueva en esto de js, sin embargo trabajo pegado de un manual http://www.librosweb.es/javascript/ y no he visto esta opcion className

Tienes un tutorial donde expliquen document.getElementById(caja).className, especialmente lo del .className

Nuevamente mil gracias

Última edición por helena71; 12/12/2012 a las 18:59
  #8 (permalink)  
Antiguo 13/12/2012, 07:23
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Cambio de color dinamicamente

lee el final de este articulo
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: color, dinamicamente, funcion, html, php
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 13:08.