Código:
Este afecta al siguiente trozo de HTML:function prepara_dossier(){ var entradas_dossier = getElementsByClassName('entradas_dossier'); for (var i = 0; i < entradas_dossier.length; i++) { entradas_dossier[i].style.display = 'none'; } } function desplegar(cual, imagen){ entrada = document.getElementById(cual); estado = entrada.style.display; if(estado == 'block'){ entrada.style.display = 'none'; imagen.src = '/images/bot_mas.gif'; } else{ entrada.style.display = 'block'; imagen.src = '/images/bot_menos.gif'; } } window.onload = prepara_dossier;
Código:
Lo que hace es, al cargar la página, ocultar todos los elementos cuyo class name sea "entradas_dossier". Luego, mediante la imagen bot_mas.gif, lanzo la función desplegar() que lo que hace es colocar el atributo display como block/none a cada elemento con el class name "entradas_dossier" según corresponda y, además, modificar el atributo SRC de la imagen clickeada.<h3 class="tit_entradas_dossier">1. Lorem <img src="/images/bot_mas.gif" onclick="desplegar('entrada_1', this)" /></h3> <div class="entradas_dossier" id="entrada_1"> <p>Lorem ipsum dolor sit amet.</p> </div> <h3 class="tit_entradas_dossier">2. Ipsum <img src="/images/bot_mas.gif" onclick="desplegar('entrada_2', this)" /></h3> <div class="entradas_dossier" id="entrada_2"> <p>Lorem ipsum dolor sit amet.</p> </div>
Bien, lo que me gustaría son dos cosas:
1- Que se pueda hacer click sobre todo el <h3> para plegar/desplegar el elemento con class "entradas_dossier" que le corresponda.
2- No tener que referenciar a dicho "entradas_dossier" por su ID.
Para esto se me ocurre que debo...
a- poder identificar unívocamente al <div> con class "entradas_dossier" que sea hermano del <h3> que lanza el evento.
b- poder identificar la <img> hija del <h3> para poder modificar su SRC
Esto es para no tener que "toquetear" mucho el HTML cada vez que haya una modificación... la idea sería darle un mayor grado de "inteligencia" al script.
¿alguna sugerencia o idea?
Saludos!
PD: versión funcional del script temporalmente en (http://) personal.alzuwaga.com.ar/numeros/001/index.php (es la parte de DOSSIER, abajo de todo)