Réponse acceptée !
ta fonction d'affichage présente un inconvénient majeur, c'est qu'il faut la modifier à chaque fois que tu va retirer et/ou ajouter une option, d'autre part elle devrait plutôt s'appeler afficheOption ou un truc dans ce goût...
Une autre approche, que j'ai évoquée plus haut peu se traduire par ce code
Code Javascript :
<script type="text/javascript">
//---------------------------------------
function afficherAutre(select_, radical_){
//-- Init diverses
var i, oDiv, nb = select_.options.length;
//-- Masque tout
for (i = 0; i < nb; i++) {
oDiv = document.getElementById( radical_ + i);
if (oDiv) {
oDiv.style.display = "none";
}
}
//-- Affiche la DIV concernee
i = select_.selectedIndex;
oDiv = document.getElementById( radical_ + i);
if (oDiv) {
oDiv.style.display = "block";
}
}
</script>ici on passe la référence au
SELECT ainsi que le radical, racine commune des
DIVs en paramètre, et l'on considère qu'il y a une
DIV par option, l'
OPTION en 1st position effaçant tout.
L'appel de la fonction devient
Code HTML :
<select name="liste" onChange="afficherAutre( this, 'opt_')">
par exemple ce qui la rend plus souple, sans modification, et utilisable par un autre
SELECT de la page.
Seule imposition avoir une structure avec un radical identique et dont le numéro est le numéro de l'option à laquelle elle se raccroche, ceci dit c'est plus logique pour la maintenance, comme dans l'exemple que tu donnes.
;O)