Inicialmente el mensaje se encuentra oculto y debemos hacer clic en el enlace para mostrarlo.
Luego si hacemos nuevamente clic volvemos a ocultarlo.
<!DOCTYPE html> <html> <head> <title>Problema</title> <script> window.addEventListener('load',inicializarEventos,false); function inicializarEventos() { var ob=document.getElementById('enlace'); ob.addEventListener('click',mostrarOcultarMensaje,false); } function mostrarOcultarMensaje(e) { var ele=document.getElementById('mensaje'); if (ele.className=='mensajeoculto') ele.className='mensajevisible'; else ele.className='mensajeoculto'; } </script> <style> .mensajeoculto{ display:none; } .mensajevisible{ color:#aaf; background-color:#ff0; display:block; font-size:30px; width:400px; border:1px solid #00f; padding:5px; } </style> </head> <body> <div class="mensajeoculto" id="mensaje"> Todo este texto permanece oculto hasta que se presiona el enlace de la parte inferior. </div> <a href="#" id="enlace">Mostrar/Ocultar Mensaje.</a> </body> </html>
El código javascript es:
window.addEventListener('load',inicializarEventos,false); function inicializarEventos() { var ob=document.getElementById('enlace'); ob.addEventListener('click',mostrarOcultarMensaje,false); } function mostrarOcultarMensaje(e) { var ele=document.getElementById('mensaje'); if (ele.className=='mensajeoculto') ele.className='mensajevisible'; else ele.className='mensajeoculto'; }
Para resolver este problema cuando se presiona el hipervinculo procedemos a extraer el nombre de la clase asignada al elemento. En el caso que contenga el valor 'mensajeoculto' procedemos a cambiar por la clase 'mensajevisible' (esta otra clase hace visible el elemento HTML):
function mostrarOcultarMensaje(e) { var ele=document.getElementById('mensaje'); if (ele.className=='mensajeoculto') ele.className='mensajevisible'; else ele.className='mensajeoculto'; }