Bonsoir,
Je dois réaliser un simple menu vertical en cascade... Je gère le HTML/CSS ms pas le Javascript. Ds le code qui suit, le soucis c que le 1er clik sur un des menus ne sert à rien, je dois réitérer l'action pour faire apparaître le sous-menu correspondant... Qq1 pourrait me donner la solution pour que, dès le 1er clic, le sous-menu s'affiche ? J'espère avoir été assez claire ^^
Merci d'avance !
Le code en question :
MENU.HTML
<html>
<head>
<style type="text/css">
.menu {display:none;}
.submenu {display:none;}
</style>
<script language="JavaScript">
function springing_Menu(currMenu) {
var i;
var pos= document.getElementById(currMenu).style.display;
if (currMenu.search('submenu')==-1)
{ for (i=1;i<6;i++) { document.getElementById('menu'+i).style.display='none';}
if (pos=='none') {document.getElementById(currMenu).style.display='block';}
}
if (currMenu.search('submenu')!=-1)
{ for (i=51;i<60;i++)
{ document.getElementById('submenu'+i).style.display='none';}
if (pos=='none') {document.getElementById(currMenu).style.display='block';}
}
}
</script>
</head>
<body>
<p><a href='#' onClick="return springing_Menu('menu1')">Menu 1</a>
<span class='menu' id='menu1'>Menu 1.1</span></p>
<p><a href='#' onClick="return springing_Menu('menu2')">Menu 2</a>
<span class='menu' id='menu2'>Menu 2.1</span></p>
<p><a href='#' onClick="return springing_Menu('menu3')">Menu 3</a>
<span class='menu' id='menu3'>Menu 3.1</span>
<p><a href='#' onClick="return springing_Menu('menu4')">Menu 4</a>
<span class='menu' id='menu4'>Menu 4.1</span>
<p><a href='#' onClick="return springing_Menu('menu5')">Menu 5</a>
<span class='menu' id='menu5'>Menu 5.1</span>
</body>
</html>
MENU.JS
//au chargement de la page, on appelle la fonction montre()
window.onload=montre;
//affichage du menu déroulant et placement de ce dernier
function montre(id,affiche)
{
var d = document.getElementById(id);
//si on quitte un élément du menu
if (d && !affiche)
{
d.style.display='none'; //on l'efface
var c=d.parentNode; //son parent
if (c.parentNode.parentNode.parentNode.tagName!='DIV') //si c'est un sous-menu, on rend à son parent les couleurs d'origine
{
c.firstChild.style.color='#39f';
c.firstChild.style.background='#fff';
}
}
//sinon si on se mets sur un élément du menu
else if (d && affiche)
{
d.style.display='block'; //on l'affiche
var c=d.parentNode; //son parent
if (c.parentNode.parentNode.parentNode.tagName!='DIV') //si c'est un sous-menu, on donne à son parent les couleurs de survol
{
c.firstChild.style.color='#fff';
c.firstChild.style.background='#39f';
}
}
}
Je dois réaliser un simple menu vertical en cascade... Je gère le HTML/CSS ms pas le Javascript. Ds le code qui suit, le soucis c que le 1er clik sur un des menus ne sert à rien, je dois réitérer l'action pour faire apparaître le sous-menu correspondant... Qq1 pourrait me donner la solution pour que, dès le 1er clic, le sous-menu s'affiche ? J'espère avoir été assez claire ^^
Merci d'avance !
Le code en question :
MENU.HTML
<html>
<head>
<style type="text/css">
.menu {display:none;}
.submenu {display:none;}
</style>
<script language="JavaScript">
function springing_Menu(currMenu) {
var i;
var pos= document.getElementById(currMenu).style.display;
if (currMenu.search('submenu')==-1)
{ for (i=1;i<6;i++) { document.getElementById('menu'+i).style.display='none';}
if (pos=='none') {document.getElementById(currMenu).style.display='block';}
}
if (currMenu.search('submenu')!=-1)
{ for (i=51;i<60;i++)
{ document.getElementById('submenu'+i).style.display='none';}
if (pos=='none') {document.getElementById(currMenu).style.display='block';}
}
}
</script>
</head>
<body>
<p><a href='#' onClick="return springing_Menu('menu1')">Menu 1</a>
<span class='menu' id='menu1'>Menu 1.1</span></p>
<p><a href='#' onClick="return springing_Menu('menu2')">Menu 2</a>
<span class='menu' id='menu2'>Menu 2.1</span></p>
<p><a href='#' onClick="return springing_Menu('menu3')">Menu 3</a>
<span class='menu' id='menu3'>Menu 3.1</span>
<p><a href='#' onClick="return springing_Menu('menu4')">Menu 4</a>
<span class='menu' id='menu4'>Menu 4.1</span>
<p><a href='#' onClick="return springing_Menu('menu5')">Menu 5</a>
<span class='menu' id='menu5'>Menu 5.1</span>
</body>
</html>
MENU.JS
//au chargement de la page, on appelle la fonction montre()
window.onload=montre;
//affichage du menu déroulant et placement de ce dernier
function montre(id,affiche)
{
var d = document.getElementById(id);
//si on quitte un élément du menu
if (d && !affiche)
{
d.style.display='none'; //on l'efface
var c=d.parentNode; //son parent
if (c.parentNode.parentNode.parentNode.tagName!='DIV') //si c'est un sous-menu, on rend à son parent les couleurs d'origine
{
c.firstChild.style.color='#39f';
c.firstChild.style.background='#fff';
}
}
//sinon si on se mets sur un élément du menu
else if (d && affiche)
{
d.style.display='block'; //on l'affiche
var c=d.parentNode; //son parent
if (c.parentNode.parentNode.parentNode.tagName!='DIV') //si c'est un sous-menu, on donne à son parent les couleurs de survol
{
c.firstChild.style.color='#fff';
c.firstChild.style.background='#39f';
}
}
}