Ocultar y mostrar DIV con javascript

Una de las cosas que más nos interesan a los webmasters es realizar un sitio con contenido dinamico y que por sobre todo sea completamente atractivo para el usuario. En muchos casos hay información que no deseamos mostrar salvo que el usuario quiera verla (como comentarios), y debemos ocultar dicho div, y tan solo mostrarlo cuando él usuario desea.
Para esto utilizamos Javascript y CSS para lograr nuestro proposito.
Lo mismo sería con divs flotantes sólo que a los mismos hay que colocarles diferentes funciones javascript y su posición deberá ser absolute o relative dependiendo de lo que busquemos.

Para mostrar y ocultar un div debemos instanciar un div con un ID único y en el estilo incluir style=”display:none;” por ejemplo:
<div id=”flotante” style=”display:none;”> </div>

Luego debemos realizar dos funciones en javascript para mostrar y ocultar dicho div respectivamente.

<script>

function mostrardiv() {

div = document.getElementById(‘flotante’);

div.style.display = ”;

}

function cerrar() {

div = document.getElementById(‘flotante’);

div.style.display=’none’;

}

</script>

Una vez hecho esto, tenemos las funciones en javascript que mostrarán y ocultarán el div cuando el usuario haga click en una imagen o un texto con el link a la función, como en el siguiente ejemplo:

<div id=”mostrarDiv”><a href=”javascript:mostrardiv();”>Mostrar Div</a></div>
<div id=”flotante” style=”display:none;”> Este es un div oculto <br><a href=”javascript:cerrar();”> presiona aquí para cerrar</a> </div>

Acá tienen el ejemplo para verlo más claramente, si quieren pueden copiar el código fuente.


  • No Related Post
bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark
tabs-top

49 comentario to “Ocultar y mostrar DIV con javascript”

  1. ed cross says:

    muchas gracias me a servido de mucho, gracias nuevamente

  2. Cesar says:

    Hola, bueno elejemplo pero como lo harias si tienes varios div similares y que cada vez que abras uno se cierre el anterior automaticamente, es decir siempre visible solo 1, sin tener que usar un boton o link cerrar, gracias

  3. admin says:

    ¿Tendrías la maquetación?
    En el caso que planteás, utilizaría JQUERY para abrir y cerrar los divs, con la función FIND.
    Pero sería bueno me entregues una maquetación HTML, la veo y te entrego el código.

  4. Jef says:

    Me parece interesante, pero, ¿cómo lograr hacerlo que al dar clic en otro vínculo, el abierto se cierre automaticamente y muestre la información del otro, sin poner… “clic aquí para cerrar” o esas cosas?… Saludos!!!

  5. Buenisimo tu ejemplo! Solamente le agregué un par de cositas, que me resultaban prácticas a mi:

    _ le paso el nombre del div como parámetro, porque yo tengo 3 DIVs que usan esta función en mi página.

    _ le agregué un IF para usar los botones como “switch”: con un clic muestra el DIV, con el siguiente lo oculta.

    Copio el código, por si a alguien le resulta útil (tampoco es una maravilla, jeje)

    function showDiv(quien) {
    div = document.getElementById(quien);
    if(div.style.display == ‘block’){
    div.style.display = ‘none’;
    }else if(div.style.display == ‘none’){
    div.style.display = ‘block’;
    };
    }

    • José says:

      Gracias Martín, me fue muy útil tu función.
      Saludos

    • yomy says:

      Martín podrías ponerme todo el código que usas por favor, incluyendo el html, es que tengo varios div probablemente sean como 50 y he tratado de aplicar la función que utilizas pero a lo mejor estoy haciendo algo mal, por favor ayúdame.
      Mi correo es yomy.yom@gmail.com

  6. admin says:

    Jef, podrías hacer una función que lo incluya, yo ahí te recomiendo Jquery, así hacés un find.

    Voy a poner más ejemplos en otro post para que quede en claro cómo usar Jquery, que es un tanto mejor, este es un básico ejemplo.

    Martin, me parece buen ejemplo para poder ocultar ó mostrar un div sin necesidad de tener un botón de cerrado.

    Sin embargo, vuelvo a recomendar Jquery, y postearé un ejemplo a la brevedad!

  7. Mik says:

    Para cerrar el resto, es decir que sólo se mantega uno abierto es necesario un for que recorra los divs y los cierre o también pasar un segundo parámetro a la función que sería el div abierto, asi puedes cerrarlo!!

    jeje un salud0o!

  8. admin says:

    No, el for es consumista, mejor un “Find” :) en jquery.

  9. alex says:

    Saben como puedo cerrar u ocultar un div desde un .swf?

    • Seiscaracteres says:

      Para cerrar el div desde un .swf debes agregar esto:

      AS2:
      on(release) {
      getURL(“javascript:cerrar();”, “_self”);
      }

      AS3:
      boton_btn.addEventListener(MouseEvent.CLICK, cerrarDiv)

      function cerrarDiv(e:MouseEvent):void {
      navigateToURL(new URLRequest(“javascript:cerrar();”),”_self”);
      }

  10. atkdesign says:

    Gracias me es de mucha utilidad. incluso en el div puedo incluir imágenes. y otras cosas gracias.

  11. admin says:

    Alex: Deberías colocar el link a la función javascript en flash. :)

  12. Te confieso que nunca había revisado JQuery, pero tu respuesta me llevó a hacerlo y quedé fascinado.

    Ahora apoyo (con entusiasmo) tus recomendaciones de usar JQuery! :)

  13. admin says:

    Es muy bueno, nadie sabe bien lo que hace, pero lo hace!

  14. eBuho says:

    JQuery es interesante pero para la técnica SEO resulta un tanto deficiente.

    • admin says:

      por qué? yo creo que es al contrario, por ejemplo:

      <a href="/donde-esta-wally-10" title="Donde está wally?" >Donde está wally?</a>

      <div id="contenido">Acá el contenido del sitio</div>

      <!-- Jquery -->

      <script language="javascript">

      $('a[rel="verOnAjax"]').click(function(){
      $("#contenido").load($(this).attr('href')+"?only-data=yes");
      return false;
      });
      </script>

      Con ese sencillo código, lo que hacemos es:
      A) Cargar el contenido con Jquery sin recargar la página (sólo trayendo los datos desde otra página) ;
      B) Si el navegador no tiene Javascript activo, entonces te envia a otra página.
      C) google detectará el link y todo funcionará correctamente.

      De hecho, es una técnica para utilizar en SEO muy conveniente. y que deja resultados asombrosos :)

      Generalmente, no es el lenguaje de programación lo que resulta ineficiente (no deficiente) sino el programador =)

  15. Angel says:

    Hola buen dia

    Tengo un pequeño problema que no he podido resolver. Sucede que estoy realizando una pagina web en la cual necesito mostrar u ocultar bloques (divs) dependiendo de el boton que seleccione, algo como esto:

    Boton_1 Boton_2 Boton_3 …. Boton_N

    Inicialmente mantengo ocultos todos los divs, y al dar clic por ejemplo en el Boton_1 deberia mostrarse el bloque correspondiente, y luego al dar clic por ejemplo en el Boton_3 se deberia ocultar el div del Boton_1 y mostrarse el del Boton_3, y asi para cada uno de los botones.

    Algo importante es que el número de botones que aparecen , se controlan de acuerdo a una consulta a la BD usando un bucle for, y es lo que me ha dado problemas al tratar de ocultar o mostrar los bloques, pues no puedo hacer estatica la funcion de javascript porque el numero de botones no siempre será el mismo.

    Ya intente haciendo como Martin Graglia menciona pero no logre hacerlo funcionar.

    Si hay manera de solucionarlo con JQuery me encantaria que me dijeran como, pues la verdad no estoy nada familiarizado con el.

    Espero me puedan ayudar

    Gracias

  16. Ricardo says:

    Amigos quisiera saber si alguien puede ayudarme, el DIV coon Javascript, me funcionó de maravilla, mi página toma el efecto sin problemas, pero quisiera saber si es posible que el efecto parta deswde el color negro, hasta que se vea mi página

    • Hola Ricardo:
      Si bien no la manejo tanto como pasarte un script funcionando, en JQuery hay una función FadeTo que te podría servir, al igual que FadeIn y FadeOut.

  17. carlos says:

    gracias siempre se agradece!

  18. jordan says:

    muchas gracias por enseñarme a ocultar divs, que la fuerza te acompañe amigo

  19. DaycareWeb says:

    Hola, por favor necesito una ayuda en:

    Quiero lograr mostrar/ocultar una imagen al marcar/desmarmar una casilla de verificacion. He tratado de adpatar lo de ocultar el div pero no me ha salido. Llevo varios dias en esto y no he podido solucionarlo.
    Muchas gracias

  20. DaycareWeb says:

    Hola, te explico mejor:
    Por favor, necesito una ayuda en:
    Quiero lograr mostrar/ocultar una imagen al marcar/desmarmar una casilla de verificacion. Llevo varios dias en esto y no he podido solucionarlo. He intentado muchas cosas, pero hasta ahora solo he logrado presentar la imagen oculta pero al marcar la casilla no se habilita la imagen.
    En terminos de programacion escrita, te diria, que necesito:
    evento 1: mostrar casilla verificacion + texto + imagen (hidden, sin href);(esto lo he logrado).
    evento 2: si la casilla de verificacion es “true” mostrar evento 3 y si es “false” mostrar evento 1.
    evento 3: mostrar imagen “visible” + href
    Muchas gracias

  21. tomas says:

    Grande, era lo que necesitaba :)

  22. David says:

    Este codigo esta buenisimo !

    Muchas Gracias …

  23. David says:

    Funciono a la perfeccion, pero tengo una pregunta, es que necesito que en ves de que me salga texto, me salga un cuadro pequeño que valla ingresando text, select, etc, es decir, estoy manejando una base de datos y necesito que cuando en el formulario le den clic en por ejemplo “mas” entonces me cargue mas funciones del formulario.

    Agradeceria si me ayudan por fa !

  24. admin says:

    Simplemente, poné el formulario dentro de un DIV oculto y listo. Cuando pongan más, lo mostrás.

    En poco tiempo, voy a ponerlo con jquery, para que se noten algunos “efectos” que son mejores.

  25. Weselp says:

    gracias, justo lo que estaba buscando

  26. Alonso says:

    Hola señores,
    tengo un problema con una lógica para ocultar y mostrar Divs dependiendo de la opción que seleccione de un combo.
    En mi combo tengo 4 opciones, cada una debe mostrar campos diferentes … por favor pido ayuda para ver si hay alguien que haya realizado algo igual o parecido

    les agradesco de antemano!

    por favor respondanme :(

  27. Danny says:

    Gracias, me ayudo, muy buenos los comentarios

  28. jesus says:

    Me ha servido de mucho. Yo tambien tengo el caso de querer mostrar/ocultar varios div…en mi caso 3 divisiones…finalmente lo que hago al hacer clic en el menu es ocultar las tres y mostrar la seleccionada

    function mostrardiv(divisionamostrar) {
    div = document.getElementById(‘inicio’);
    div.style.display=’none’;
    div = document.getElementById(‘contacto’);
    div.style.display=’none’;
    div = document.getElementById(‘nosotros’);
    div.style.display=’none’;

    div = document.getElementById(divisionamostrar);
    div.style.display=’’;
    }

    el código desde los enlaces de navegación es

    Inicio
    Contacto
    Nosotros

    la idea es sencilla pero práctica. por su puesto inicialmente la division ‘inicio’ esta visible.

    En mi caso me sirve porque no hay demasiado contenido en nosotros y contacto.

  29. carmen says:

    Mi caso es utilizando una lista de menú de dos opciones, para la primera que el formulario quede como esta, pero para la segunda opción se debe mostrar un div con 4 campos adicionales para realizar un ingreso.

    Si alguien sabe como hacer que esto funcione, pos una manito =) gracias de ante mano!

  30. Roxana says:

    Hola, tengo un sidebar y quiero hacer que cuando haga click a uno, se cierre la información que mostraba el link anterior.
    Cómo lo p uedo hacer?

  31. Anonimo says:

    gracias funciona todo

  32. gsus says:

    justo lo que buscaba, exelente aporte!!!!
    Gracias

  33. cesar says:

    che no es mas facil con
    function mostrardiv() {

    $(‘#flotante’).show();

    }

    function cerrar() {

    $(‘#flotante’).hide();

    }

  34. cesar says:

    Excelente informacion, mas bien si quieres enviar desde un combo tendria que usarlo en el evento onchange? y como podria enviarle el valor de la seleccion del combo?

  35. Muy bueno, se pueden hacer cosas muy interesantes con esta informacion

  36. Elias says:

    Me viene de diez, muchas gracias. Voy a recomendar la web, muy buena :)

  37. Victor Pernas says:

    Muy buen ejemplo. Pero tengo una pequeña duda.
    Estoy intentando integrarlo en un combobox y dependiendo de lo elegido que me muestre una capa y oculte las demas.

    El código de mi combo es:

    Seleccione opción…
    A Coruña
    Lugo
    Ourense
    Pontevedra

    ¿Como tendría que dejar el script?

    function muestradiv(provincia.value) {
    var n = provincia.value;
    div = document.getElementById(‘flotante’+n);
    div.style.display = ”;

    }

    Asi no me funciona. que me falta

  38. majo says:

    justo lo q buscaba muchas graciasss

  39. ELKIN says:

    GRACIAS ME sirvio de mucho

  40. iriv says:

    Gracias!!! Muy util el post ;)

Deja un comentario