IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Liste déroulante en JavaScript


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 6
    Points
    6
    Par défaut Liste déroulante en JavaScript
    Bonjour à tous
    Est ce que quelqu'un peut m'aider à trouver le chemin pour résoudre ce problème.

    ----------------------le sujet------------------------

    En JavaScript, si l’utilisateur clique sur le bouton “notation”, insérez dans l’élément HTML BODY un formulaire
    (FORM) comportant un menu déroulant (balise html <«select»>) permettant à l’utilisateur de choisir une note
    de musique en notation classique. N’ajoutez pas de bouton SUBMIT.
    b) Créez en JavaScript un tableau de données (array) permettant de retrouver les correspondances.
    c) Générez les balises OPTIONS du SELECT à l’aide d’une boucle foreach parcourant toutes les entrées du
    tableau. Ajoutez une option vide par défaut (pas de choix)
    Le JavaScript doit être unobstrusive.

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <!DOCTYPE html>
    <html lang="fr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="style.css">
        <title>Notation américaine</title>
    </head>
    <body>
    <input type="button" name="button" value="notation" onclick="notes()">
     
        <script src="main.js"></script>
     
    </body>
    </html>


    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    form = document.createElement("form");
    label = document.createElement("label");
    label.innerHTML = "Trouver la note américaine de : ";
    select = document.createElement("select");
    form.appendChild(label);
    form.appendChild(select);
    document.body.appendChild(form);
    paragraphe = document.createElement("p");
    document.body.appendChild(paragraphe);
    function notes(){
      let notes;
      notes = {
        "": "",
        C: "Do",
        D: "Re",
        E: "Mi",
        F: "Fa",
        G: "Sol",
        A: "La",
        B: "Si",
      };
    }
     
     
    for (const key in notes) {
      const option = document.createElement("option");
      option.value = key;
      option.textContent = notes[key];
      select.appendChild(option);
    }
     
    select.addEventListener("change", function () {
      paragraphe.textContent =
        "La notation américaine pour la note " +
        select.options[this.selectedIndex].textContent +
        " est " +
        this.value;
    });

    si je clique sur notation rien ne se passe


    merci d'avance

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut

    Pourquoi la déclaration de ton array est elle dans une fonction?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //function notes(){
      let notes;
      notes = {
        "": "",
        C: "Do",
        D: "Re",
        E: "Mi",
        F: "Fa",
        G: "Sol",
        A: "La",
        B: "Si",
      };
    //}
    là cela fonctionne.
    Édit:
    J'ajouterai ceci dans l’événement pour indiquer le non choix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    select.addEventListener("change", function ()
    	{
    		if (this.value !=="")
    		{
    			paragraphe.textContent =
    			"La notation américaine pour la note " +
    			select.options[this.selectedIndex].textContent +
    			" est " +
    			this.value;
    			}else{
    			paragraphe.textContent = "pas de choix";
    		}
    	}
    );
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Bonjour

    J'ai revu le code et j'obtiens ceci

    -------------------------------------------JavaScript-------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    form = document.createElement("form");
    label = document.createElement("label");
    label.innerHTML = "Trouvez la notation américaine de : ";
    select = document.createElement("select");
    form.appendChild(label);
    form.appendChild(select);
    document.body.appendChild(form);
    paragraphe = document.createElement("p");
    document.body.appendChild(paragraphe);
     
    const notes = {
        "": "",
        C: "Do",
        D: "Re",
        E: "Mi",
        F: "Fa",
        G: "Sol",
        A: "La",
        B: "Si",
    };
     
    for (const key in notes) {
        const option = document.createElement("option");
        option.value = key;
        option.textContent = notes[key];
        select.appendChild(option);
    }
     
    select.addEventListener("change", function() {
        paragraphe.textContent = "La notation américaine pour la note " + select.options[this.selectedIndex].textContent + " est " + this.value;
    });
    dans le fichier HTML je dois créer un bouton Notation lié au script sur lequel on clique pour avoir une liste déroulante.

  4. #4
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Bonjour,

    Insère au moins ton bouton dans un conteneur et donne-lui un id, pas un name;
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p>
       <input type="button" id="b" value="notation" />
    </p>

    Par ailleurs, ton label ne sert à rien, en l'état...

    Modifie le code comme ça:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    document.getElementById("b").addEventListener("click",function(){
     
    	const notes = {
    		"": "",
    		C: "Do",
    		D: "Re",
    		E: "Mi",
    		F: "Fa",
    		G: "Sol",
    		A: "La",
    		B: "Si",
    	};
     
    	const f = document.createElement("form");
     
    	const lab = document.createElement("label");
    	lab.textContent = "Trouver la note américaine de : ";
    	lab.setAttribute("for","sel");
     
    	const sel = document.createElement("select");
    	sel.setAttribute("id","sel");
    	for(let key in notes){
    		let opt = document.createElement("option");
    		opt.value = key;
    		opt.text = notes[key];
    		sel.appendChild(opt);
    	}
     
    	f.appendChild(lab);
    	f.appendChild(sel);
    	document.body.appendChild(f);
     
    	const p = document.createElement("p");
    	document.body.appendChild(p);
     
    	sel.addEventListener("change", function () {
    		p.textContent =
    		this.value!="" ?
    		`La notation américaine pour la note ${sel.options[this.selectedIndex].text} est ${this.value}.`:
    		"Choisissez une note."
    	});
    },{once:true}
    )

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Bonjour
    Je demande de l'aide sur ce sujet là qui est une suite de ce code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    document.getElementById("button").addEventListener("click", function () {
     
      const notes = {
        "": "",
        C: "Do",
        D: "Re",
        E: "Mi",
        F: "Fa",
        G: "Sol",
        A: "La",
        B: "Si",
      };
     
      const f = document.createElement("form");
     
      const lab = document.createElement("label");
      lab.textContent = "Trouver la note américaine de : ";
      lab.setAttribute("for", "sel");
     
      const sel = document.createElement("select");
      sel.setAttribute("id", "sel");
      for (let key in notes) {
        let opt = document.createElement("option");
        opt.value = key;
        opt.text = notes[key];
        sel.appendChild(opt);
      }
     
      f.appendChild(lab);
      f.appendChild(sel);
      document.body.appendChild(f);
     
      const p = document.createElement("p");
      document.body.appendChild(p);
     
      sel.addEventListener("change", function () {
        p.textContent =
          this.value != "" ?
          `La notation américaine pour la note ${sel.options[this.selectedIndex].text} est ${this.value}.` :
          "Choisissez une note."
      });
    }, {
      once: true
    })
    Lorsque l’utilisateur choisit une note :
    a) Envoyez au serveur PHP une requête AJAX en envoyant la valeur de l’élément et en récupérant en JavaScript
    l’url du script PHP dans l’attribut ACTION de l’élément FORM.
    Sur le serveur
    b) A l’aide de la valeur du SELECT, il doit retrouver dans son tableau de correspondance (array) sa correspondance
    américaine (voir Devoir N° 1 de JavaScript perfectionnement)
    c) Votre code PHP doit retourner le message « La notation américaine pour la note X est X». Javascript le récupère
    et l’affiche dans un élément de la page.
    Le Javascript doit être unobstrusive.

    Merci d'avance

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    hormis le fait de recopier le code qui t'a été fournie qu'est ce que tu as trouvé comme réponse/code à mettre en place !!!!

    Je sais c'est pas sympa mais je ne suis pas sûr que tu fasses de réels efforts d'apprentissage, fait moi me tromper

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Bonjour

    Figure toi je fais beaucoup d'efforts pour comprendre les explications qu'on me donne. C’est d’ailleurs par le biais de vos codes que je parviens à comprendre le sujet de mieux en mieux. Figure toi à chaque fois qu'on me donne une solution , je l'étudie minutieusement.Quand parfois tu es nouveau dans quelque chose il est nécessaire de demander de l'aide, si je ne fais pas d'efforts c'est à moi que je fais du tort mais pas à quelqu'un d'autre.

    Respectueusement votre,

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2020
    Messages : 20
    Points : 6
    Points
    6
    Par défaut
    Bonjour

    En plus j'ai donné le code que j'ai fait mais celui-ci a totalement été ignoré et à la place j'ai reçu un nouveau code. Donc j'ai fait un effort à la base. Je trouve bien de reprendre les codes que les experts nous donnent à nous débutants. C'est la raison pour laquelle je l'ai repris c'est tout.
    Si on est là en train de chercher de l'aide ce n'est pas qu'on croise les bras et ne rien faire, c'est faux, tout débutant est passé par là. J'en convient que ce n'est pas sympa du tout car des remarques de ce genre emmènent certains débutants à laisser tout tomber.
    J'aimerais mieux qu'on nous encourage pour nous motiver à aller jusqu'au bout de l'effort et surtout qu'on prenne le temps de mieux nous expliquer les choses. Car c'est la raison de ce genre de forum mais cela ne doit pas être l'inverse, un lieu pour donner des leçons de moral.



    Merci de votre comprehension
    Respectueusement votre.

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Citation Envoyé par NoSmoking
    (...), fait moi me tromper
    tu y es en partie arrivé

    J'attire quand même ton attention que dans ta dernière requête il y à 3 questions qui mériterait chacune une discussion.

    <pour rappel>

    Une discussion = une question

    Poser plusieurs questions dans un seul et même fil nuit grandement à la qualité du forum : notamment, lors d'une recherche, tout le contenu du fil n'est pas indiqué dans le titre, elle devient donc plus ardue.

    Notre but est de maintenir une base de connaissances facile à exploiter par tous les visiteurs, utilisable par tous. Vous avez pu bénéficier de ce forum en posant vos questions, laissez la possibilité aux suivants de bénéficier des réponses en leur offrant un sujet moins dispersé.

    </pour rappel>

    Si l'on prend simplement la première :
    a) Envoyez au serveur PHP une requête AJAX en envoyant la valeur de l’élément et en récupérant en JavaScript
    l’url du script PHP dans l’attribut ACTION de l’élément FORM.
    qu'elles sont tes connaissances en Ajax et qu'est ce qui coince ?

    Je te conseille : Comprendre les mécanismes d'AJAX

Discussions similaires

  1. Création liste déroulante en javascript pour adobe livecyrcle
    Par mad000 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/07/2009, 14h57
  2. [PHP-JS] Liste déroulante et javascript
    Par zorbo dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/05/2008, 14h54
  3. Vider et Remplir une liste déroulante en javascript
    Par vds2302 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/11/2007, 16h47
  4. Réponses: 1
    Dernier message: 26/08/2007, 22h21
  5. sens d'ouverture d'une liste déroulante en javascript
    Par arnogef dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/05/2007, 21h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo