Bonjour,
il faut de toute façon revoir la STRUCTURE du code.
1/ Remplacer :
1 2 3 4 5 6
| <div id="box">
<div id="offre"><a href="" onclick="javascript:affiche1(); return false;" >Ligne 1</a></div>
<div id="offre"><a href="" onclick="javascript:affiche2(); return false;" >Ligne 2</a></div>
<div id="offre"><a href="" onclick="javascript:affiche3(); return false;" >Ligne 3</a></div>
<div id="offre"><a href="" onclick="javascript:affiche4(); return false;" >Ligne 4</a></div>
</div> |
par (sémantiquement plus correct) :
1 2 3 4 5 6
| <ul id="box">
<li id="offre_1" class="offre"><a href="" onclick="affiche_offre(1);" >Ligne 1</a></li>
<li id="offre_2" class="offre"><a href="" onclick="affiche_offre(2);" >Ligne 2</a></li>
<li id="offre_3" class="offre"><a href="" onclick="affiche_offre(3);" >Ligne 3</a></li>
<li id="offre_4" class="offre"><a href="" onclick="affiche_offre(4);" >Ligne 4</a></li>
</ul> |
N.B.
- En CSS, un ID doit être UNIQUE. Une CLASS peut être multiple.
- une seule fonction JavaScript suffit ici, avec un paramètre : affiche_offre(n); (il suffit aussi de mettre return false; dedans)
2/ Pour garder la couleur du bouton une fois cliqué, une petite fonction JavaScript suffit aussi :
-> on ajoute une class "offre_current" au <li> concerné !
N.B. : on peut intégrer ce bout de code à la fonction affiche_offre(n) !
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| function affiche_offre(n)
{
// Affichage du Tableau
document.getElementById('tableau').innerHTML = "Ligne " + n;
// Modification des Class :
var i;
for (i=1; i<5; i++){
if(i==n){ // on ajoute la class offre_current
document.getElementById('offre_' + i).className = "offre offre_current";
} else {
document.getElementById('offre_' + i).className = "offre";
}
}
return false;
} |
Enfin en CSS :
Remplacer #offre par .offre, et ajouter :
.offre_current { font-weight:bold; color:red; }
Partager