javascript alternar para mostrar / ocultar div

Tengo una función de alternar de JavaScript:

 function toggle(layer) { var d = document.getElementById(layer); d.style.display = (d.style.display == 'none') ? '' : 'none'; }  

Lo que esto hace es:

Tengo algunos enlaces en la página y al hacer clic en estos enlaces muestra / oculta la sección correspondiente de DIV asociada a él.

En los siguientes dos enlaces abre y cierra la sección div llamada stusearch & facsearch

 Student Manager Faculty Manager 

Esto funciona bien, excepto que, me gustaría ocultar el alternar mostrado anteriormente cuando se hace clic en un nuevo enlace de alternar, en el momento en que el anterior permanece abierto, y el nuevo se abre debajo de él.

Ajusté tu código un poco aquí . Terminé agregando una variable para almacenar los divs que desea mostrar / ocultar en caso de que quiera agregar más divs para alternar:

 var divs = [ "stusearch", "facsearch" ]; function toggle(layer) { var d for(var i = 0; i < divs.length; i += 1) { d = document.getElementById(divs[i]); d.style.display = 'none'; } d = document.getElementById(layer); d.style.display = ''; } 
  

En javascript puro, la manera más fácil será simplemente ‘recordar’ el último elemento que modificó: también conocido como:

 var lastElement = null; function toggle(elementId) { if(lastElement != null) lastElement.style.display = 'none'; var newElement = document.getElementById(elementId); newElement.style.display = (newElement.style.display == 'none') ? 'visible' : 'none'; if(newElement != lastElement) lastElement = newElement; } 

Ocultas la última referencia, luego obtienes la nueva y la muestras.

Podrías mantener una var local,

  

Alternativamente, puede controlar la visibilidad con una clase css y hacer una remoción de la clase de todos los elementos antes de configurarlo.

Aquí hay una solución jQuery en caso de que alguna vez decida implementar una biblioteca:

el JavaScript:

 function toggle(layer) { $('.toggleableSearch').hide(); $(layer).show(); } 

el html:

 Student Manager Faculty Manager