Foros del Web » Programando para Internet » Javascript »

Problema con capas

Estas en el tema de Problema con capas en el foro de Javascript en Foros del Web. Buenas chic@s. Tengo el siguiente código JS: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original < script language = "JavaScript" >   function muestra_oculta ( id ...
  #1 (permalink)  
Antiguo 09/06/2011, 12:30
 
Fecha de Ingreso: abril-2011
Mensajes: 85
Antigüedad: 13 años, 1 mes
Puntos: 5
Problema con capas

Buenas chic@s.

Tengo el siguiente código JS:

Código Javascript:
Ver original
  1. <script language="JavaScript">
  2.  
  3. function muestra_oculta(id){
  4. if (document.getElementById){ //se obtiene el id
  5. var el = document.getElementById(id); //se define la variable "el" igual a nuestro div
  6. el.style.display = (el.style.display == 'none') ? 'block' : 'none'; //damos un atributo display:none que oculta el div
  7. }
  8. }
  9. window.onload = function(){/*hace que se cargue la función lo que predetermina que div estará oculto hasta llamar a la función nuevamente*/
  10. muestra_oculta('div_a_mostrar');/* "contenido_a_mostrar" es el nombre que le dimos al DIV */
  11. }
  12. </script>

El caso es que su función es la siguiente: cuando lo llamo desde algún sitio me hace lo que tiene que hacer, oculta o muestra un DIV, hasta ahí bien, pero la cosa se complica cuando hay 2, 3, 4... div's yo lo que quiero es que cuando le de a un div, todos los demás se oculten y solo se muestre el que yo quiera, y así con todos.

He probado múltiples maneras y no hay manera, he buscado por Google pero el código que yo busco no es 100% el que necesito, y por eso acudo a vosotros, a ver si me podeis echar un cable entre todos y me sacáis de este aprieto.

Muchísimas gracias!
  #2 (permalink)  
Antiguo 09/06/2011, 15:30
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Respuesta: Problema con capas

Deberìas añadir un atributo a los divs para agruparlos y poder mostrar u ocultar las capas correspondientes, por ejemplo agregando un atributo rel.
Hice este ejemplo para que tengas una idea, los links 'buttonDiv' muestran las capas que contienen el atributo grupoX_div y que contienen el nombre de clase del atributo href 'div_a_mostrar_x'

Código HTML:
Ver original
  1. <div id="buttons">
  2. <a class="buttonDiv" href="#div_a_mostrar_1" rel="grupo1">1</a> <a class="buttonDiv" href="#div_a_mostrar_2" rel="grupo1">2</a>
  3.  -
  4. <a class="buttonDiv" href="#div_a_mostrar_1" rel="grupo2">3</a> <a class="buttonDiv" href="#div_a_mostrar_2" rel="grupo2">4</a>
  5. <div>
  6.  
  7.     <div class="div_a_mostrar_1" rel="grupo1_div">
  8.         <div class="content">Div 1 grupo 1</div>
  9.     </div>
  10.     <div class="div_a_mostrar_2" rel="grupo1_div">
  11.         <div class="content">Div 2 grupo 1</div>
  12.     </div>
  13.    
  14.     <div class="div_a_mostrar_1" rel="grupo2_div">
  15.         <div class="content">Div 1 grupo 2</div>
  16.     </div>
  17.     <div class="div_a_mostrar_2" rel="grupo2_div">
  18.         <div class="content">Div 2 grupo 2</div>
  19.     </div>

Código Javascript:
Ver original
  1. function hasClass(el,clase){return el.className.match(new RegExp('(\\s|^)'+clase+'(\\s|$)'))}
  2. function muestra_oculta(clase,rel){
  3.     var D = document.getElementsByTagName('*'), i;
  4.     for(i=0;i<D.length;i++){
  5.         if(D[i].getAttribute('rel') == rel + "_div"){
  6.             D[i].style.display = 'none';
  7.             if(hasClass(D[i],clase)) D[i].style.display = D[i].style.display == 'none' ? 'block' : 'none';
  8.         }
  9.     }
  10. }
  11. (function(clases,id){
  12.     var d = document, z = d.getElementById(id), b = z.getElementsByTagName('a'), x;
  13.     for(x=0;x<b.length;x++){
  14.         if(hasClass(b[x],clases)){
  15.             b[x].onclick = function(){
  16.                 var c = this.href ? this.href.split(/#/)[1] || '_' : '_';
  17.                 muestra_oculta(c,this.getAttribute('rel'))
  18.             }
  19.         }
  20.     }
  21. })('buttonDiv','buttons');
  22. muestra_oculta('div_a_mostrar_1','grupo1')
  23. muestra_oculta('div_a_mostrar_1','grupo2')
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */

Etiquetas: capas
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 06:09.