JS : Ouvrir plusieurs Expand dans une page HTM
Salut,
J'ai créé une arborescence de menu de ce style :
Etat fermé: + Menu
Qui devient
- Menu
+ Item
Et enfin
Etat ouvert: - Menu
- Item1
blablabla
lorsque je clique sur les + (via un onclick=expand)
J'aurais voulu maintenant ajouter un bouton extérieur qui me permettrait d'arriver directement à l'état ouvert, du genre "Ouvrir tous les +".
Voilà la fonction JS que j'utilise (je précise qu'elle n'est pas de moi) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| // Fonction qui affiche/cache un menu
function expand(li) {
var node = li.firstChild;
var img = li.firstChild;
// parcours tous les fils pour trouver l'element UL
while ( node.nodeName != "UL" )
node = node.nextSibling;
// parcours tous les fils pour trouver l'element IMG
while ( img.nodeName != "IMG" )
img = img.nextSibling;
// affiche le menu
if ( node.style.display == 'none' ) {
node.style.display = 'block';
img.src = 'images/moins.gif';
img.alt = '[-]';
}
// cache le menu
else {
node.style.display = 'none';
img.src = 'images/plus.gif';
img.alt = '[+]';
}
} |
Et voici ma page HTM
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<ul>
<li>
<img src="images/plus.gif" onclick="expand(this.parentNode)" class="icoh2" width="9" height="9">
<p>Menu</p>
<ul class="toc" style="display:none">
<li>
<img src="images/plush3.gif" onclick="expand(this.parentNode)" class="icoh3" width="9" height="9">
<p>Item1</p>
<ul class="toc" style="display:none">
<li class="marg">
blabla
</li>
</ul>
</li>
</ul>
</li>
</ul> |
Est ce que quelqu'un a une idée ?
Je pensais faire un genre de boucle sur cette fonction en parcourant toute la page mais n'y connaissant rien en JavaScript je ne sais pas comment procéder.
Merci !