Foros del Web » Creando para Internet » HTML »

[AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque el contenido

Estas en el tema de [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque el contenido en el foro de HTML en Foros del Web. Buenaas, soy nuevo por aqui, sin embargo llevo consultando este foro bastante tiempo ya, asi que saludos! Tengo el siguiente problema, quiero hacer una tabla ...
  #1 (permalink)  
Antiguo 24/10/2012, 11:47
 
Fecha de Ingreso: octubre-2012
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Exclamación [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque el contenido

Buenaas, soy nuevo por aqui, sin embargo llevo consultando este foro bastante tiempo ya, asi que saludos!

Tengo el siguiente problema, quiero hacer una tabla en html que muestre en cada fila unos datos determinados, y además un botón para mostrar/ocultar una segunda fila debajo de esta, que contenga más informacion.

El código es el siguiente:

Esta es la cabecera de la tabla:
Código HTML:
<TABLE border='1px'>
    <TR bgcolor='silver'>
        <TH align='center' width='100'>N&deg Id</TH>
        <TH align='center' width='100'>DNI</TH>
        <TH align='center'>Nombre</TH>
        <TH align='center'>E-mail</TH>
        <TH align='center'></TH> 
    </TR> 

Esto se repite tantas veces como sea necesario para ir contruyendo cada fila.
Código HTML:
 <TR>
            <TD align='center'>ID_1</TD>
            <TD align='center'>DNI_1</TD>
            <TD>Nombre_1</TD>
            <TD>Email_1</TD>
            <TD>
                <BUTTON href='#' onclick='JavaScript:ShowHide("1111")'>Ver Grupos</BUTTON>
            </TD>
        </TR> 
        
        <TR id='1111' style='display:none'>
            <TD align='center' colspan='5'> <!-- CELDA CRITICA! -->
                <TABLE border='1'>
                    <TR>
                        <TH align='center' colspan='4'>TABLA 2</TD>
                    </TR>
                    <TR>
                        <TD align='center'>ASDAD</TD>
                        <TD align='center'>ASDAD</TD>
                        <TD align='center'>ASDAD</TD>
                        <TD align='center'>ASDAD</TD>
                    </TR>
                
                </TABLE>
            </TD>
        </TR> 
Como se puede observar, el boton "Ver Grupos", en la quinta celda de la primera fila, muestra/oculta la fila de abajo, haciendo referencia a la misma a través del id='1111'.

Por otro lado, tenemos que la segunda tabla (TABLA 2) está centrada dentro de una celda de la segunda fila de la tabla principal. La celda en cuestión es la "CELDA CRITICA"

Hasta ahi bien, las dos cosas funciona perfectamente, por separado. En cuanto junto las dos cosas la "celda critica" actua como si tuveira un colspan="1", por lo que se queda a la izquierda de la tabla alineada con la primera columna y todo se desajusta.

He probado a poner el "id='1111' style='display:none'", tanto en la fila, como en la celda, como en la tabla. Si lo pongo en la fila o en la celda pasa lo que he descrito. Si lo pongo en la tabla, la celda respeta el colspan, pero las celdas de la tabla se alinean a la izquierda del todo de la "celda critica", aunque se haya especificado la propiedad align="center".

Por lo que he podido comprobar el problema está al tocar la el atributo display de la propiedad style. En cuanto se toca el atributo para configurar el ShowHide, la celda se descoloca, si no se toca dicha propiedad entonces las tablas se muestran bien, pero claro se muestran todas, ya no funciona el showhide.

La funcion ShowHide que estoy utilizando es la predeterminada, no estoy usando ninguna funcion javascript personalizada.

En fin, no se que hacer, estoy pensando en buscar otro formato para presentar los datos, pero me gustaría saber si alguien tiene alguna solucion.

Muchas gracias por adelantado y un salduo!

Última edición por hosyou; 24/10/2012 a las 14:03 Razón: Errata en el codigo explicativo
  #2 (permalink)  
Antiguo 26/10/2012, 16:08
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

no se cual sera la funcion showhide predeterminada pero esta va de lujo ;)
function ShowHide(xd){
if(document.getElementById(xd).style.display==""){
document.getElementById(xd).style.display="none";
}else{
document.getElementById(xd).style.display="";
}
}
  #3 (permalink)  
Antiguo 28/10/2012, 08:02
 
Fecha de Ingreso: octubre-2012
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Realmente el problema no es la funcion ShowHide, la que tengo yo tambien funciona bien, es que cuando se oculta la celda que quiero ocultar, el contenido de la misma se descoloca y al volver a mostrarlo ya se queda mal.
  #4 (permalink)  
Antiguo 28/10/2012, 08:46
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Lo más seguro es que sea la función ShowHide, que no modifica como debe los atributos o propiedades de la fila (como el display). Pero hay que verla.

Ya estamos un poco hartos de explicar esto, pero te lo repito : poné un ejemplo que podamos probar, algo que lo copie, lo pegue en un editor, lo guarde y lo abra en un navegador. Se tiene que ver claramente como aparece y desaparece esa celda con su botón.
Nada elaborado, un ejemplo básico y ceñido a tu problema; lo que sobra (como una cantidad absurda de filas), lo sacás.

Por otro lado ¿realmente se justifica que estés anidando tablas en celdas? ¿te las tira así un programa en el servidor, y no tenés manera de arreglarlo?.

Por último, si esa función "predeterminada" (¿?) es JQuery, vas a tener que pedir el traslado al foro de Frameworks, si es JS se podría ver acá primero y después se mueve.
  #5 (permalink)  
Antiguo 28/10/2012, 09:10
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Edito:
Esta vez me madrugaste voz @furoya

@hosyou :

Por favor cuando hagas este tipo de preguntas, poné todo el código completo y no fragmentado.
Tu html está bastante sucio, y los id no pueden ser ni comenzar por un número. Asi y todo entiendo el problema (que no se da en IE), una posible solución, si es que la estructura se repite es

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6. <script type="text/javascript">
  7. //<![CDATA[
  8. function ShowHide(fila) {
  9. if ((document.getElementById(fila).style.display) == 'block') {
  10.  document.getElementById(fila).style.display = 'none';
  11. }
  12. else {
  13.  document.getElementById(fila).style.display = 'block';
  14. }
  15. }
  16. //]]>
  17. </head>
  18. <table border='1' style="border-collapse:separate;empty-cells:hide;">
  19. <tr bgcolor='silver'>
  20. <th align='center' width='100'>N° Id</th>
  21. <th align='center' width='100'>DNI</th>
  22. <th align='center'>Nombre</th>
  23. <th align='center'>E-mail</th>
  24. <th align='center'>&nbsp;</th>
  25. </tr>
  26.  
  27. <tr>
  28. <td align='center'>ID_1</td>
  29. <td align='center'>DNI_1</td>
  30. <td>Nombre_1</td>
  31. <td>Email_1</td>
  32. <td><button onclick='ShowHide("a1111")'>Ver Grupos</button></td>
  33. </tr>
  34. <tr>
  35. <td align='center' colspan='5'>
  36. <table border='1' align="center" style="display: none;"  id='a1111' >
  37. <tr>
  38. <th align='center' colspan='4'>TABLA 2</th>
  39. </tr>
  40. <tr>
  41. <td align='center'>ASDAD</td>
  42. <td align='center'>ASDAD</td>
  43. <td align='center'>ASDAD</td>
  44. <td align='center'>ASDAD</td>
  45. </tr>
  46. </td>
  47. </tr>
  48.  
  49. <tr>
  50. <td align='center'>ID_2</td>
  51. <td align='center'>DNI_2</td>
  52. <td>Nombre_2</td>
  53. <td>Email_2</td>
  54. <td><button onclick='ShowHide("a1112")'>Ver Grupos</button></td>
  55. </tr>
  56. <tr>
  57. <td align='center' colspan='5'>
  58. <table border='1' align="center" style="display: none;"  id='a1112' >
  59. <tr>
  60. <th align='center' colspan='4'>TABLA 3</th>
  61. </tr>
  62. <tr>
  63. <td align='center'>ASDAD</td>
  64. <td align='center'>ASDAD</td>
  65. <td align='center'>ASDAD</td>
  66. <td align='center'>ASDAD</td>
  67. </tr>
  68. </td>
  69. </tr>
  70.  
  71.  
  72. </body>
  73. </html>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 28/10/2012, 11:14
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Perdón. Nos tenemos que poner de acuerdo para postear.

Yo pensba, además, que podría usar table-row o table-row-group para hacer visible esa parte de la tabla.

No le quise decir nada por los errores de JS y HTML, porque me amargaba la mañana.

Recién le posteo a otro que se "olvidó" de decir que tenía un reset CSS y pretendía que lo adivináramos.

Los domingos están peor que de costumbre...
  #7 (permalink)  
Antiguo 28/10/2012, 11:43
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Cita:
Iniciado por furoya Ver Mensaje
Perdón. Nos tenemos que poner de acuerdo para postear.

Yo pensba, además, que podría usar table-row o table-row-group para hacer visible esa parte de la tabla.

No le quise decir nada por los errores de JS y HTML, porque me amargaba la mañana.

Recién le posteo a otro que se "olvidó" de decir que tenía un reset CSS y pretendía que lo adivináramos.

Los domingos están peor que de costumbre...
Usted está en todas maestro.

Igual me parece que algo anda mal en esto, hice esta versión mejorada
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Documento sin t&iacute;tulo</title>
  5.  
  6. <style type="text/css">
  7. /*<![CDATA[*/
  8.  
  9. #a1, #a2{
  10. display: none;
  11. margin: 0;
  12. }
  13.  
  14. table#principal{
  15. empty-cells: hide;
  16. border-collapse: separate;
  17. }
  18.  
  19. button{
  20. width: 90%;
  21. }
  22.  
  23. td.np{
  24. padding: 0;
  25. }
  26. /*]]>*/
  27. <script type="text/javascript">
  28. //<![CDATA[
  29. function ShowHide(rowId,b) {
  30. if ((document.getElementById(rowId).style.display) == 'block') {
  31.  document.getElementById(rowId).style.display = 'none';
  32. b.innerHTML = 'Ver Grupos';
  33. }
  34. else {
  35.  document.getElementById(rowId).style.display = 'block';
  36.  b.innerHTML = 'Ocultar Grupos';
  37. }
  38. }
  39. //]]>
  40. </head>
  41.  
  42. <table width="50%" border="1" cellspacing="1" cellpadding="2" id="principal">
  43.   <tr bgcolor="#999966">
  44.     <th align="center">ID</th>
  45.     <th align="center">DNI</th>
  46.     <th align="center">Nombre</th>
  47.     <th align="center">Email</th>
  48.     <th align="center">&nbsp;</th>
  49.   </tr>
  50.   <tr>
  51.     <td align="center">id1</td>
  52.     <td align="center">dni1</td>
  53.     <td align="center">Nombre_1</td>
  54.     <td align="center">Email_1</td>
  55.     <td align="center"><button onclick="ShowHide('a1',this)">Ver Grupos</button></td>
  56.   </tr>
  57.   <tr>
  58.     <td colspan="5" align="center" class="np">
  59.         <table border="1" cellpadding="2" cellspacing="1" id="a1">
  60.       <tr>
  61.         <th colspan="4">TABLA 1 </th>
  62.         </tr>
  63.       <tr>
  64.         <td>ASDAD</td>
  65.         <td>ASDAD</td>
  66.         <td>ASDAD</td>
  67.         <td>ASDAD</td>
  68.       </tr>
  69.     </table></td>
  70.   </tr>
  71.   <tr>
  72.     <td align="center">id2</td>
  73.     <td align="center">dni2</td>
  74.     <td align="center">Nombre_2</td>
  75.     <td align="center">Email_2</td>
  76.     <td align="center"><button onclick="ShowHide('a2',this)">Ver Grupos</button></td>
  77.   </tr>
  78.   <tr align="center">
  79.     <td colspan="5" class="np">
  80.         <table border="1" cellpadding="2" cellspacing="1" id="a2">
  81.       <tr>
  82.         <th colspan="4">TABLA 1 </th>
  83.       </tr>
  84.       <tr>
  85.         <td>ASDAD</td>
  86.         <td>ASDAD</td>
  87.         <td>ASDAD</td>
  88.         <td>ASDAD</td>
  89.       </tr>
  90.     </table></td>
  91.   </tr>
  92.  
  93. </body>
  94. </html>

y en chrome sigue el problema, se pierde el centrado de la tabla que se oculta/muestra
Cre oque es cosa de empezarla de 0 y buscar otro camino

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #8 (permalink)  
Antiguo 28/10/2012, 11:47
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Agrego, que se olvide, vaya y pase, ¿pero que no nos lo diga a nosotros?
Estamos dibujados
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #9 (permalink)  
Antiguo 28/10/2012, 17:58
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Uff. Ya me tienen podrido. Son una manga de irrespetusos. Y lo peor que después son ellos los que se hacen los ofendidos. El otro día comentaba qué suerte tienen de que yo nunca pueda ser moderador en este sitio. Porque los baneaba a todos por maleducados.


Y volviendo al código, sí, no anda bien. Tiene que ver con eso que comentaba.
Los escripts de tienen que ajustarse al estilo de destino. En este caso sería.

Código:
function ShowHide(rowId,b) {
 if ((document.getElementById(rowId).style.display) == 'table') {
  document.getElementById(rowId).style.display = 'none';
 b.innerHTML = 'Ver Grupos';
 }
 else {
  document.getElementById(rowId).style.display = 'table';
  b.innerHTML = 'Ocultar Grupos';
 }
}
(Se le pasó ese detalle, maestro. Y seguro que a hosyou -que todavía ni apareció- , también.)
  #10 (permalink)  
Antiguo 28/10/2012, 20:02
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Cosa e mandinga.
No se me pasó, jamás se me hubiera ocurrido restaurar la visibilidad con 'table' cuando la tabla debe comportarse como tal
Ves @furoya, hasta de una 'falta de respeto' se aprende algo nuevo, este foro es impagable

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #11 (permalink)  
Antiguo 28/10/2012, 20:02
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Cita:
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Realmente el problema no es la funcion ShowHide, la que tengo yo tambien funciona bien, es que cuando se oculta la celda que quiero ocultar, el contenido de la misma se descoloca y al volver a mostrarlo ya se queda mal.
Estas diciendo que el problema no es la funcion, pero que al ocultar te destroza lo que tienes, a mi parecer eso no es funcionar correctamente y yo te estoy diciendo que con el html que has dado la funcion que te he dado funciona perfectamente, no entiendo que problema hay
  #12 (permalink)  
Antiguo 29/10/2012, 07:32
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Sí, tu función anda porque estás haciendo un document.getElementById(xd).style.display="";, que devuelve el display a su modo original, sea cual éste fuere.

A mí me están empezando a hartar soberanamente las paciencias los caprichosos que vienen a pedir pero no son capaces de poner un ejemplo. O peor, que tiran partes de código "y no entienden" por qué con eso no alcanza. Que tampoco es una cuestión de entender, es una cuestión de respeto por la gente que quiere ayudar.


Cita:
Iniciado por emprear
Ves @furoya, hasta de una 'falta de respeto' se aprende algo nuevo, este foro es impagable
Vamos a ser sinceros, emprear, a este Foro lo hacemos impagable los que venimos a colaborar (digo, inmodestamente como siempre) .

Porque yo lo visito para leer mensajes como los tuyos; si fuera solamente por los que vienen a rapiñar código y discutir lo indiscutible, ni aparezco.
  #13 (permalink)  
Antiguo 29/10/2012, 09:22
 
Fecha de Ingreso: octubre-2012
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

Buenas a todos y muchisimas gracias por las respuestas. Siento la falta de información, estoy algo verde, pero no volverá a pasar. Una vez mas muchas gracias por ayudarme.

Al final el problema era precisamente en la función ShowHide, que no la encontraba por eso puse lo de la "funcion predeterminada de javascript". El código completo no es mio, yo debo revisarlo y mejorarlo, y algunas cosas se me habian pasado... u^^

En efecto puse que la funcion estaba funcionando (valga la redundancia) bien, porque pensaba que sólo ocultaba/mostraba la celda, pero precisamente era la que lo jodia todo.
Para ocultar la celda se modificaba el display asi:
Código:
document.getElementById(id).style.display="none"
Pero para mostrarla lo hacía de la siguiente forma
Código:
document.getElementById(id).style.display="block"
Y la forma que yo necesitaba era esta:
Código:
document.getElementById(id).style.display=""
Todavía no estoy seguro de la diferencia aunque como bien ha dicho furoya, se debe a la linea document.getElementById(xd).style.display="";

Pero no se qué hace el document.getElementById(xd).style.display="block";, para que se trastocara la colocacion de la celda.

Una vez más lamento que el planteamiento de mi problema haya sido tan precario, entiendo que aqui se resuelven muchos problemas y que sin un adecuado planteamiento es dificil. Muchas gracias por contestar y por ayudarme
  #14 (permalink)  
Antiguo 29/10/2012, 10:24
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años
Puntos: 317
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

La ventaja que tiene la falta de información para resolver un problema, es que después vamos al Colegio Hogwarts y nos regalan el diploma.


La explicación es simple, la mencionamos más arriba : la tabla se comporta como tabla, porque tiene por default un display:table; si se lo cambiás con
document.getElementById(id).style.display="block" se comporta como un bloque cualquiera, le estás modificando la forma en que se ve naturalmente.

El ejemplo de juanito1712 es medio una chanchada, porque con document.getElementById(id).style.display="" lo que hacés es vaciarle el valor, pero así te asegurás que el navegador lo rellene por las suyas, y siempre va a usar el que le corresponda a ese elemento.
  #15 (permalink)  
Antiguo 29/10/2012, 12:55
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 14 años, 6 meses
Puntos: 66
Respuesta: [AYUDA]Problema ocultar/mostrar celda de una tabla sin que se descoloque e

uy chanchada, mala persona ¬_¬

con lo bien que funciona alternar entre "none" y "" que aun no lo he visto fallarme

y ahora... ¿que puñetas es una chanchada?XD

Etiquetas: display, hide, javascript, show, tablas
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 08:36.