Afficher div selon option select
Résolu/Fermé
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
-
13 déc. 2017 à 17:55
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 15 déc. 2017 à 10:44
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 15 déc. 2017 à 10:44
A voir également:
- Afficher div selon option select
- Windows 11 afficher d'autres options - Guide
- Option booster free avis - Accueil - Guide opérateurs et forfaits
- Afficher appdata - Guide
- Afficher mot de passe wifi android - Guide
- Afficher taille dossier windows - Guide
2 réponses
Salut,
houla vous ne vous y prenez pas par le chemin le plus simple.
En effet pour afficher quelque chose en fonction d'ACTION(s) de l'utilisateur c'est bien JavaScript.
Seulement je vous conseille de partir des bases(si ce n'est de la programmation - en tout cas celle qui se nomme autrement que procédurale).
L'informatique est avant tout (et la programmation surtout) un moyen de se simplifier la vie. C'est pour cela que l'on évite (IMPORTANT) de répéter plusieurs fois la même chose et là où le mot informatique devient magique c'est qu'il implique des DONNÉES et l’Automatisation DE TRAITEMENTS.
L'automatisation c'est la réutilisation d'un programme ou bout d'un programme(ex: une fonction) pour plusieurs cas possible. C'est aussi les boucles logiques et/ou conditionnelles.
Particulièrement dans le cas de JavaScript et des langages (dits) web qui est un langage fonctionnant sur l'ordinateur client(sauf exceptions) on parle de programmation événementielle. C'est simplement axé une partie de sa conception( ex: l'algorithme) sur les événements, autrement dits les actions(surtout celles de l'utilisateur : par exemple lorsqu'il clique sur un bouton, qu'il appuie sur une touche, qu'il change de page, etc...).
Reprenons votre programme:
(l'ordre ne correspond pas vraiment à l'ordre de réalisation ou logique réel)
houla vous ne vous y prenez pas par le chemin le plus simple.
En effet pour afficher quelque chose en fonction d'ACTION(s) de l'utilisateur c'est bien JavaScript.
Seulement je vous conseille de partir des bases(si ce n'est de la programmation - en tout cas celle qui se nomme autrement que procédurale).
L'informatique est avant tout (et la programmation surtout) un moyen de se simplifier la vie. C'est pour cela que l'on évite (IMPORTANT) de répéter plusieurs fois la même chose et là où le mot informatique devient magique c'est qu'il implique des DONNÉES et l’Automatisation DE TRAITEMENTS.
L'automatisation c'est la réutilisation d'un programme ou bout d'un programme(ex: une fonction) pour plusieurs cas possible. C'est aussi les boucles logiques et/ou conditionnelles.
Particulièrement dans le cas de JavaScript et des langages (dits) web qui est un langage fonctionnant sur l'ordinateur client(sauf exceptions) on parle de programmation événementielle. C'est simplement axé une partie de sa conception( ex: l'algorithme) sur les événements, autrement dits les actions(surtout celles de l'utilisateur : par exemple lorsqu'il clique sur un bouton, qu'il appuie sur une touche, qu'il change de page, etc...).
Reprenons votre programme:
(l'ordre ne correspond pas vraiment à l'ordre de réalisation ou logique réel)
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
13 déc. 2017 à 20:48
13 déc. 2017 à 20:48
Bonjour,
Déjà...aujourd'hui on travaille avec les ID et non les FORM.....
Ensuite, voici à quoi pourrait ressembler ton code
A toi de l'adapter à tes besoins.
.
Déjà...aujourd'hui on travaille avec les ID et non les FORM.....
Ensuite, voici à quoi pourrait ressembler ton code
<!doctype html> <html lang="fr"> <head> <meta charset="utf-8" /> <title>TEST</title> </head> <body> <h1>TEST</h1> <select id="Fr_Menu" name="Fr_Menu" size="7" onChange="updateFr_Sub_menu(this.selectedIndex)"> <option disabled >-- Menu --</option> <option value="Hommes">Hommes</option> <option value="Femmes">Femmes</option> <option value="Enfants">Enfants</option> <option value="Bébés">Bébés</option> </select> <select id="select_Fr_Sub_menu" name="Fr_Sub_menu" size="7" onchange="afficher_div(this.value);"></select> <div id="ma_div_1" class="mes_divs" style="display:none">blabla 01</div> <div id="ma_div_2" class="mes_divs" style="display:none">blabla 02</div> <div id="ma_div_3" class="mes_divs" style="display:none">blabla 03</div> <div id="ma_div_4" class="mes_divs" style="display:none">blabla 04</div> <div id="ma_div_5" class="mes_divs" style="display:none">blabla 05</div> <div id="ma_div_6" class="mes_divs" style="display:none">blabla 06</div> <div id="ma_div_7" class="mes_divs" style="display:none">blabla 07</div> <div id="ma_div_8" class="mes_divs" style="display:none">blabla 08</div> <div id="ma_div_9" class="mes_divs" style="display:none">blabla 09</div> <div id="ma_div_10" class="mes_divs" style="display:none">blabla 10</div> <div id="ma_div_11" class="mes_divs" style="display:none">blabla 11</div> <div id="ma_div_12" class="mes_divs" style="display:none">blabla 12</div> <script type="text/javascript"> var Fr_Menu_list=document.getElementById('Fr_Menu'); var Fr_Sub_menu_list=document.getElementById('select_Fr_Sub_menu'); var Fr_Sub_menu=new Array() Fr_Sub_menu[0]="" Fr_Sub_menu[1]=["Valeur A1", "Valeur A2", "Valeur A3"] Fr_Sub_menu[2]=["Valeur B1", "Valeur B2", "Valeur B3"] Fr_Sub_menu[3]=["Valeur C1", "Valeur C2", "Valeur C3"] Fr_Sub_menu[4]=["Valeur D1", "Valeur D2", "Valeur D3"] function updateFr_Sub_menu(selectedcitygroup){ Fr_Sub_menu_list.innerHTML = ""; if (selectedcitygroup>0){ for (i=0; i<Fr_Sub_menu[selectedcitygroup].length; i++){ var opt = document.createElement('option'); opt.value = i+1; opt.innerHTML = Fr_Sub_menu[selectedcitygroup][i]; Fr_Sub_menu_list.appendChild(opt); } } } function afficher_div(id){ console.log('id :' + id); hideAllDiv('mes_divs'); document.getElementById('ma_div_'+id).style.display="block"; } function hideAllDiv(clasName){ console.log('on masque toutes les div.. qui ont la class : ' + clasName); var elements = document.getElementsByClassName(clasName); for (var i = 0; i < elements.length; i++){ elements[i].style.display = 'none'; } } </script> </body> </html>
A toi de l'adapter à tes besoins.
.
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
14 déc. 2017 à 11:35
14 déc. 2017 à 11:35
Merci Jordane45 pour ton aide.
Cependant je rencontre un dysfonctionnement dans le code...
Lorsque je passe à la seconde ligne de mon premier select, la div est remise à
Penses-tu pouvoir m'aider encore un peu ?
Cependant je rencontre un dysfonctionnement dans le code...
Lorsque je passe à la seconde ligne de mon premier select, la div est remise à
ma_div_1et non pas par exemple à
ma_div_4comme l'exemple ci-dessous :
Supposons mon Fr_Menu :
Homme
Femme
Enfant
Bébé
-------------------
Supposons mon Fr_Sub_menu :
Pour Homme : ma_div_1, ma_div_2, ma_div_3
Pour Femme : ma_div_4, ma_div_5, ma_div_6, ma_div_7
Pour Enfant : ma_div_8, ma_div_9, ma_div_10
Pour Bébé : ma_div_11, ma_div_12
Penses-tu pouvoir m'aider encore un peu ?
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
14 déc. 2017 à 15:17
14 déc. 2017 à 15:17
Le plus simple serait que tu nommes tes div avec une combinaison des index de ton tableau
Par exemple ..
Pour les div 1 2 et 3 (qui sont donc attachés à ta ligne : Fr_Sub_menu[1]=["Valeur A1", "Valeur A2", "Valeur A3"] ) il faudrai les nommer:
id="ma_div_1_0" , id="ma_div_1_1" id="ma_div_1_2"
le premier 1 correspond à la clé de ton tableau, les chiffres 0,1,2 étant la position dans la liste.
Un truc du genre
Par exemple ..
Pour les div 1 2 et 3 (qui sont donc attachés à ta ligne : Fr_Sub_menu[1]=["Valeur A1", "Valeur A2", "Valeur A3"] ) il faudrai les nommer:
id="ma_div_1_0" , id="ma_div_1_1" id="ma_div_1_2"
le premier 1 correspond à la clé de ton tableau, les chiffres 0,1,2 étant la position dans la liste.
Un truc du genre
<!doctype html> <html lang="fr"> <head> <meta charset="utf-8" /> <title>TEST</title> </head> <body> <h1>TEST</h1> <select id="Fr_Menu" name="Fr_Menu" size="7" onChange="updateFr_Sub_menu(this.selectedIndex)"> <option disabled >-- Menu --</option> <option value="Hommes">Hommes</option> <option value="Femmes">Femmes</option> <option value="Enfants">Enfants</option> <option value="Bébés">Bébés</option> </select> <select id="select_Fr_Sub_menu" name="Fr_Sub_menu" size="7" onchange="afficher_div(this.value);"></select> <div id="ma_div_1_1" class="mes_divs" style="display:none">blabla 01</div> <div id="ma_div_1_2" class="mes_divs" style="display:none">blabla 02</div> <div id="ma_div_1_3" class="mes_divs" style="display:none">blabla 03</div> <div id="ma_div_2_1" class="mes_divs" style="display:none">blabla 04</div> <div id="ma_div_2_2" class="mes_divs" style="display:none">blabla 05</div> <div id="ma_div_2_3" class="mes_divs" style="display:none">blabla 06</div> <div id="ma_div_3_1" class="mes_divs" style="display:none">blabla 07</div> <div id="ma_div_3_2" class="mes_divs" style="display:none">blabla 08</div> <div id="ma_div_3_3" class="mes_divs" style="display:none">blabla 09</div> <div id="ma_div_4_1" class="mes_divs" style="display:none">blabla 10</div> <div id="ma_div_4_2" class="mes_divs" style="display:none">blabla 11</div> <div id="ma_div_4_3" class="mes_divs" style="display:none">blabla 12</div> <script type="text/javascript"> var Fr_Menu_list=document.getElementById('Fr_Menu'); var Fr_Sub_menu_list=document.getElementById('select_Fr_Sub_menu'); var Fr_Sub_menu=new Array() Fr_Sub_menu[0]="" Fr_Sub_menu[1]=["Valeur A1", "Valeur A2", "Valeur A3"] Fr_Sub_menu[2]=["Valeur B1", "Valeur B2", "Valeur B3"] Fr_Sub_menu[3]=["Valeur C1", "Valeur C2", "Valeur C3"] Fr_Sub_menu[4]=["Valeur D1", "Valeur D2", "Valeur D3"] function updateFr_Sub_menu(selectedcitygroup){ Fr_Sub_menu_list.innerHTML = ""; if (selectedcitygroup>0){ for (i=0; i<Fr_Sub_menu[selectedcitygroup].length; i++){ var opt = document.createElement('option'); opt.value = selectedcitygroup + '_' + parseInt(i+1); opt.innerHTML = Fr_Sub_menu[selectedcitygroup][i]; Fr_Sub_menu_list.appendChild(opt); } } } function afficher_div(id){ console.log('id :' + id); hideAllDiv('mes_divs'); document.getElementById('ma_div_'+id).style.display="block"; } function hideAllDiv(clasName){ console.log('on masque toutes les div.. qui ont la class : ' + clasName); var elements = document.getElementsByClassName(clasName); for (var i = 0; i < elements.length; i++){ elements[i].style.display = 'none'; } } </script> </body> </html>
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
15 déc. 2017 à 10:44
15 déc. 2017 à 10:44
Bonjour Jordane et merci beaucoup pour ton aide !