Partage
  • Partager sur Facebook
  • Partager sur Twitter

Réaction à des événements

Fonctions avec ou sans paramètre

Sujet résolu
    22 avril 2018 à 12:11:52

    Merci d'avance à quiconque pourra m'éclairer.

    Je ne comprends pas ce corrigé de l'un des exercices du chapitre "Réagissez à des événements" dans le cours "Créez des pages web interactives avec JS" :

    /*
    Exercice : modifier une liste
    */
    
    document.querySelector("button").addEventListener("click", function () {
        var nomDessert = prompt("Entrez le nom du nouveau dessert :");
    
        var dessertElt = document.createElement("li");
        dessertElt.textContent = nomDessert;
        dessertElt.addEventListener("click", function (e) {
            var nouveauNom = prompt("Modifiez le nom du dessert :", e.target.textContent);
            e.target.textContent = nouveauNom;
        });
    
        document.getElementById("desserts").appendChild(dessertElt);
    });

    Plusieurs questions :
    - Pourquoi le premier "prompt" ne contient entre parenthèse que la chaîne "Entrez le nom du nouveau dessert", alors que le second prompt contient en plus de la chaîne un objet "e.target.textContent" ?
    - A quoi correspond exactement cet objet ?
    - Pourquoi la première fonction anonyme ne prend-elle aucun paramètre alors que la seconde prend un paramètre "e" ?
    - A quoi correspond ce paramètre ? 

    Et enfin, pourquoi mon code ci-dessous ne fonctionne-t-il pas ? (aucune réaction quand je clique sur un dessert pour changer son nom)

    function ajoutDessert() {
        var nvDessert = window.prompt("Entrez un nouveau dessert");
        var liElt = document.createElement("li");
        liElt.textContent = nvDessert;
        document.getElementById("desserts").appendChild(liElt);
    }
    
    var bouton = document.getElementsByTagName("button")[0];
    bouton.addEventListener("click", ajoutDessert);
    
    var listeDesserts = document.getElementsByName("li");
    
    for (var i = 0; i < listeDesserts.length; i++) {
        listeDesserts[i].addEventListener("click", function() {
            var nvNom = window.prompt("Entrez un nouveau nom");
            listeDesserts[i].textContent = nvNom;
        });
    }



    • Partager sur Facebook
    • Partager sur Twitter
      22 avril 2018 à 13:19:51

      Salut,

      je pense que c'est ton Event qui n'est pas bon.

      pour en être sur, tu peux me faire voir le code HTML que tu as écrit?

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        22 avril 2018 à 13:26:38

        Le paramètre e est un objet Evenement qui permet de récupérer des informations sur l'événement.

        Dans le premier cas on en a pas besoin, dans le second, vu que le addListener est le même pour chaque boutons modifier, on a besoin de récupéré le bouton cliqué.

        Pour cela on utilise e.target qui permet de récupérer le bouton appuyé. Ce que tu dois utiliser dans ton cas !

        -
        Edité par Anonyme 22 avril 2018 à 13:27:39

        • Partager sur Facebook
        • Partager sur Twitter
          22 avril 2018 à 14:08:19

          Compris, merci beaucoup. J'ai réussi l'exercice :)
          • Partager sur Facebook
          • Partager sur Twitter

          Réaction à des événements

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown