Foros del Web » Programando para Internet » Javascript »

Problemas con divs apilados

Estas en el tema de Problemas con divs apilados en el foro de Javascript en Foros del Web. El problema que tengo es que si defino en css los div con display:none, despues no puedo cambiarlo de ningun modo. La soluciones que he ...
  #1 (permalink)  
Antiguo 03/02/2011, 06:51
 
Fecha de Ingreso: septiembre-2010
Ubicación: Malaga
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Problemas con divs apilados

El problema que tengo es que si defino en css los div con display:none, despues no puedo cambiarlo de ningun modo. La soluciones que he encontrado es usar la propiedad visibility, o quitando el display del css y asignarle esa propiedad al inicio de la pagina con js.

¿ Alguna luz de porque cuando se pone el display:none en css, no hace caso cuando se intenta cambiar con js ?

Dejo aqui un exctracto de codigo deonde he aislado el problema
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4.  
  5.  
  6. #div1 {
  7.     z-index:1;
  8.     width:600px;
  9.     height:400px;
  10.     background:#fffcd1;
  11.     color:#444;
  12. }
  13.  
  14. #div2 {
  15.     position: absolute;
  16.     z-index:2;
  17.     top:50px;
  18.     left:50px;
  19.     width:400px;
  20.     height:200px;
  21. //  display:none;
  22.     background:red;
  23.     color:#444;
  24. }
  25.  
  26. #div3 {
  27.     position: absolute;
  28.     z-index:3; 
  29.     top:100px;
  30.     left:100px;
  31.     width:200px;
  32.     height:100px;
  33. //  display:none;
  34.     background:blue;
  35.     color:#444;
  36. }
  37.  
  38.  
  39.  
  40. function cambia(id) {
  41.  
  42.   var fila = document.getElementById(id);
  43.   if (fila.style.display != "none") {
  44.     fila.style.display = "none"; //ocultar fila
  45.   } else {
  46.     fila.style.display = ""; //mostrar fila
  47.   }
  48.  
  49. }
  50.  
  51. function inicio() {
  52.  
  53.     document.getElementById("div2").style.display = "none";
  54.     document.getElementById("div3").style.display = "none";
  55.  
  56. }
  57.  
  58.  
  59. </head>
  60.  
  61. <body onload="javascript:inicio()">
  62.  
  63. <div id='div1'>
  64. aaaaaaaa1111
  65. </div>
  66.  
  67. <div id='div2'>
  68. aaaaaaaa222222222
  69. </div>
  70.  
  71. <div id='div3'>
  72. aaaaaaaa3333333333
  73. </div>
  74.  
  75. <a href='javascript:cambia("div2")'>Mostras/ocultar el 2</a><br>
  76. <a href='javascript:cambia("div3")'>Mostras/ocultar el 3</a><br>
  77. </body>
  78. </html>
  #2 (permalink)  
Antiguo 03/02/2011, 07:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Problemas con divs apilados

Hola

Dos cosas
  • En css se comenta con /* */
  • No te funciona por que estás asignando valor en lugar de evaluar. (=) asigna valor, (==) evalua
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 03/02/2011, 10:21
 
Fecha de Ingreso: septiembre-2010
Ubicación: Malaga
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Problemas con divs apilados

Gracias por responder.

Pero no entiendo tu respuesta. Si lo que quiero cambiar es el valor tendre que asignarselo con
fila.style.display = "";
o
fila.style.display = "none";

Nunca habia tenido problemas con esto y la unica diferencia es que estas capas las necesito con position absolute.

El ejemplo que he puesto tal y como esta funciona correctamente, pero si descomento display:none, deja de funcionar y las capas nunca se muestran.

Tomo nota de lo que me dices y en el futuro comentare css con /* */
  #4 (permalink)  
Antiguo 03/02/2011, 10:35
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 19 años, 1 mes
Puntos: 37
Respuesta: Problemas con divs apilados

Dale la propiedad block para mostrar el div

if (fila.style.display != "none") {

fila.style.display = "none"; //ocultar fila

} else {

fila.style.display = "block"; //mostrar fila

}
  #5 (permalink)  
Antiguo 03/02/2011, 10:54
 
Fecha de Ingreso: septiembre-2010
Ubicación: Malaga
Mensajes: 47
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: Problemas con divs apilados

Correcto!!!

Con esa modificacion ya si funciona con el display none incluido en el css.

El problema, es que es parte de una funcion generica que la uso en multitud de ocasiones, y no se si el modificarla me descalbalgara otras cosas.

Optare por clonarla o usar una de las dos "soluciones" que antes comente


Gracias

Etiquetas: Ninguno
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 22:54.