Foros del Web » Programando para Internet » Javascript »

problema con ocultar/mostrar tabla

Estas en el tema de problema con ocultar/mostrar tabla en el foro de Javascript en Foros del Web. Hola, tengo un problema con ocultar o mostrar una tabla. Como siempre, el problema es con IE... aunque Firefox igual tiene algo culpa. Resulta que ...
  #1 (permalink)  
Antiguo 23/09/2008, 17:03
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 17 años
Puntos: 2
problema con ocultar/mostrar tabla

Hola, tengo un problema con ocultar o mostrar una tabla. Como siempre, el problema es con IE... aunque Firefox igual tiene algo culpa.

Resulta que tengo la siguiente tabla:
Código HTML:
<table class="formularios" id="buscar">
    <tbody>
        <tr>
            <td class="etiquetas">
                <label>Rut alumno</label>
            </td>
            <td class="campos">
                <input type="text" name="busqueda[rut]" maxlength="8" size="10"  /> 
            </td>
        </tr>
        <tr>
            <td class="etiquetas">
                <label>Opciones</label>
            </td>
            <td class="campos">
                <input type="submit" value="Aceptar" class="boton" />
            </td>
        </tr>
    </tbody>
</table> 


La clase etiquetas se etiquetas le da el ancho correspondiente a la columna, lo mismo que la clase campos.

También Tengo una función Javascript que se encarga de mostrar u ocultar la tabla (o cualquier otra capa)

Código:
function alternar(id) {
    var elemento = document.getElementById(id);
    
    if(elemento.style.display == 'none') {
        mostrar(elemento);
    }
    else {
        ocultar(elemento);
    }
}

function ocultar(elemento) {
    elemento.style.display = 'none';
}

function mostrar(elemento) {
    elemento.style.display = 'block';
}
Entonces, al llamar a la función le paso el identificador de la tabla ('buscar').

El problema esta, en que si oculto la capa (acción que se realiza sin problema) y luego llamo nuevamente a la función para mostrar la tabla, esta se muestra, pero se "deforma". Las columnas cambian su ancho:


Si esta misma pagina con el mismo código lo pruebo en IE7, funciona sin problema. Tanto para ocultar como mostrar la tabla. Todo se ve perfecto.

Así que tratando de arreglar el problema para que el resultado sea igual en ambos navegadores, en la función Javascript cambie el atributo display del elemento para que se muestre. En vez de 'block' le puse 'table' y al probarlo en Firefox funciona bien. Ocultando o mostrando la tabla, funciona y todo se mantiene tal cual. Pero al momento de probarlo en IE7 no funciona y me avisa de un error, e investigando me doy cuenta que IE7 no soporta el atributo 'table'

Entonces mi pregunta es: De que forma puedo hacer para ocultar una tabla y no tenga esta clase de problemas? Algun otro atributo que me pueda servir?

PD: Probe con el atributo visibility pero no sirve para lo que quiero, ya que este oculta una tabla o capa pero deja visible el espacio que ocupa en la pagina, y lo que quiero es que ese espacio no exista mientras el elemento esta oculto.
__________________
KIBIT.cl
  #2 (permalink)  
Antiguo 23/09/2008, 21:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 1 mes
Puntos: 839
Respuesta: problema con ocultar/mostrar tabla

No suelo recomendarlo, pero tal vez puedes poner toda la tabla dentro de un div (u otro contenedor) y mostrar/ocultar ese contenedor .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 25/09/2008, 15:35
Avatar de Snd234  
Fecha de Ingreso: mayo-2007
Ubicación: Frente al PC
Mensajes: 413
Antigüedad: 17 años
Puntos: 2
Respuesta: problema con ocultar/mostrar tabla

Al final implemente eso, fue lo mas simple...
__________________
KIBIT.cl
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:59.