Cómo hacer que un DIV sea visible e invisible con JavaScript


113

Puedes hacer algo como

function showDiv()
{
    [DIV].visible = true;
    //or something
}

1
¿Por qué no usar Jquery? .esconder() ?
— coderama

¿Usaría eso para el nombre del div, así que si el div se llamara prueba, lo haría test.hide()?

8
@JackStone: No, eso es solo si ya está usando la biblioteca jQuery. A algunas personas les gusta promocionarlo en cada pregunta de JavaScript. Incluso si lo fuera, .hide()no establece visibilidad. Establece la pantalla.


8
Para algo como esto, una buena respuesta debe contener tanto una solución JS simple como una que muestre la ventaja de usar una biblioteca; en este caso, no tener que lidiar con inline vs block cuando se usa displaypara mostrar un elemento.
— ThiefMaster

Respuestas:


139

si [DIV] es un elemento, entonces

[DIV].style.visibility='visible'

O

[DIV].style.visibility='hidden' 

16
visibilitytiene el efecto secundario de que el espacio ocupado por el elemento queda reservado. Eso puede ser o no lo que quiere el OP
— Pekka

1
En el lugar donde dice [DIV], escribiría el nombre de mi div, ¿verdad?

20
No, use en document.getElementById('id-of-the-div')lugar de[DIV]
— ThiefMaster

@JackStone: Depende de lo que quieras decir con el "nombre" de tu div. Si es una variable que hace referencia al div, entonces sí.

1
Entonces, si mi div fuera el nombre testdiv, ¿lo sería document.getElementById('testdiv').style.visibility = 'hidden';?

124

Supongamos que no usa una biblioteca como jQuery.

Si aún no tiene una referencia al elemento DOM, obtenga una usando var elem = document.getElementById('id');

Luego, puede establecer cualquier propiedad CSS de ese elemento. Para mostrar / ocultar, puede usar dos propiedades: displayy visibility, que tienen efectos ligeramente diferentes:

El ajuste style.displayse verá como si el elemento no estuviera presente en absoluto ("eliminado").

elem.style.display = 'none'; // hide
elem.style.display = 'block'; // show - use this for block elements (div, p)
elem.style.display = 'inline'; // show - use this for inline elements (span, a)

o style.visibilityhará que el div todavía esté allí, pero esté "todo vacío" o "todo blanco"

elem.style.visibility = 'hidden'; // hide, but lets the element keep its size
elem.style.visibility = 'visible';

Si está utilizando jQuery, puede hacerlo aún más fácil siempre que desee establecer la displaypropiedad:

$(elem).hide();
$(elem).show();

Utilizará automáticamente el displayvalor apropiado ; no tiene que preocuparse por el tipo de elemento (en línea o bloque). Además, elemno sólo puede ser un elemento DOM sino también un selector como #ido .class, o cualquier otra cosa que es válido CSS 3 (y más!).


Prefiero tu respuesta, pero supongo que hay una pequeña corrección que debes usar elem.style.display = 'none';
— Saumil


29

Puede usar visibilityo, displaypero debe aplicar cambios al div.styleobjeto y no al divobjeto en sí.

var div = document.getElementById('div_id');

// hide
div.style.visibility = 'hidden';
// OR
div.style.display = 'none';

// show
div.style.visibility = 'visible';
// OR
div.style.display = 'block';

div.style.visibility = falseno me funciona en Chrome. Y la truepieza parece estar funcionando más por accidente porque desarma la propiedad (aunque no es mi voto negativo)
— Pekka

Ni displaytampoco visibilitylas propiedades booleanas. Además de eso, noney es blocknecesario
— citarlo

valores incorrectos para las etiquetas. Esos funcionan ahora y no, no voy a jugar con esto, es demasiado simplista.
— zellio

4

Puede utilizar las funciones DOM: setAttribute y removeAttribute. En el siguiente enlace tienes un ejemplo de cómo utilizarlos.

funciones setAttribute y removeAttribute

Una vista rápida:

hide:    document.getElementById("myDiv").setAttribute("hidden","");
unhide:  document.getElementById("myDiv").removeAttribute("hidden");

2
¿Puedes mejorar tu respuesta? Con ejemplo y explicaciones.
— Gaël Barbin

1

Puede usar lo opacityque es similar visibility pero permite una transición suave y controlar otros parámetros como la altura (para simplificar el fragmento, puse la lógica js en html directamente, no lo haga en el código de producción)


0

Utilice el atributo 'oculto' del elemento DOM:

function showDiv(isVisible)
{
    [DIV].hidden = !isVisible;
}

0

Hacer invisible usando CSS

#div_id {
        /*height: 400px;*/
         visibility:hidden;
    }

Hacer visible usando Javascript

document.getElementById('div_id').style.visibility = 'visible';
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.