Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours Créez des pages web interactives avec JS

    17 mai 2016 à 17:32:32

    Bonjour à tous et bienvenue à tous ceux qui participent au cours "Créez des pages web interactives avec JavaScript" !


    Ce cours vous permettra de rendre vos pages dynamiques et interactives afin d'améliorer l'expérience de l'utilisateur sur le Web.

    Je vous invite à poster vos questions sur le cours ici. J'essaierai de répondre régulièrement, mais n'hésitez pas à discuter entre vous et à vous entraider.

    À bientôt ! 
    Baptiste
    • Partager sur Facebook
    • Partager sur Twitter
      17 mai 2016 à 18:44:38

      Bonjour

      Je viens de débuter le cours "Créez des pages web interactives avec JS", et le lien de la solution au problème en fin de chapitre "Découvrez le DOM" ne fonctionne pas (Error 404). Même si l'exercice ne présente pas de difficulté particulière, je voudrai simplement comparer mon code avec la solution proposée.

      Merci

      Thierry

      PS : vos cours sont vraiment très bien conçus  !  Encore bravo

      • Partager sur Facebook
      • Partager sur Twitter
        17 mai 2016 à 18:57:03

        Merci professeur Baptiste Pesquet pour ce nouveau cours qui nous permettra d'avancer dans JavaScript.

        Concernant le lien vers la solution ,moi aussi je trouve le même problème. J’espère que ce soit résolu prochainement.

        • Partager sur Facebook
        • Partager sur Twitter
        Ce qui est simple est faux. Ce qui est compliqué est inutilisable. Paul Valéry.
          17 mai 2016 à 19:55:14

          Je crois que le problème est dû au chemin incorrect indiqué par le lien :

          quand on essaie plutôt ce chemin   ("gh-pages" au lieu de "master")alors les contenus html (/html) et javascript (/js) sont accessibles.

          • Partager sur Facebook
          • Partager sur Twitter
          Ce qui est simple est faux. Ce qui est compliqué est inutilisable. Paul Valéry.
            17 mai 2016 à 21:19:14

            Bonsoir à tous ..

            Et merci pour ce nouveau cours ... ;)

            • Partager sur Facebook
            • Partager sur Twitter

            Where there is a shell, there is a way

              17 mai 2016 à 22:58:26

              Dans le quiz 2, question 6, Firefox réagit différemment de la réponse "juste" (je n'en dis pas plus pour ne pas donner la réponse).

              A part ça, le cours est très clair et bien structuré. Merci ! :magicien:

              -
              Edité par nadiascrat 18 mai 2016 à 11:08:50

              • Partager sur Facebook
              • Partager sur Twitter
                18 mai 2016 à 10:45:00

                Bonjour a tous,

                Juste une petite note.

                Dans l'exercice "Gestion des attributs" du chapitre 2, je pense que les lignes 24 a 26 doivent être effaces pour ne pas nous faire tromper, nous étudiants. Étant donne qu'il nous est demande de la rajouter après.

                Sur ce merci Mr Baptiste pour ce cours très attendu pour ma part...

                Ça donne envie.

                • Partager sur Facebook
                • Partager sur Twitter
                  18 mai 2016 à 15:52:32

                  super merci beaucoup!

                  -
                  Edité par GauthierdeD 18 mai 2016 à 15:57:09

                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 mai 2016 à 18:06:20

                    Bonjour,

                    Merci pour ce cours, il est vraiment bien pour moi qui me replonge dans le javascript.

                    Je voulais signaler une petite faute de frappe dans le formulaire d'exemple du chapitre 6, il appel le fichier "cous.js" au lieu de "cours.js". C'est gênant pour tester.

                    Cordialement 

                    -
                    Edité par Jean-Charles R 19 mai 2016 à 18:06:41

                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 mai 2016 à 22:12:08

                      Bonjour,

                      Existe-t-il un format du cours en pdf ou autre téléchargeable (car bien pratique pour jeter un petit coup d’œil parfois) ???

                      merci

                      François

                      • Partager sur Facebook
                      • Partager sur Twitter
                      FG
                        20 mai 2016 à 15:54:13

                        Bonjour, j'ai un problème avec la question 6 du deuxième Quizz. Je ne donnerais pas la réponse ici, mais aucunes des quatre réponses ne correspondent. Ou alors l'une des réponse qui semble être la bonne est assez mal formulé. 

                        <inputtype="text"id="input">

                        document.getElementById("input").addEventListener("change", function () {
                        console.log("Coucou");});

                        J'ai testé moi même. 

                        -
                        Edité par latios95 20 mai 2016 à 15:55:55

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Les rêves ne sont qu'une autre réalité...
                          20 mai 2016 à 18:14:33

                          Bonjour,

                          Merci à tous eux qui ont signalé des typos ou des liens morts, ces erreurs sont maintenant corrigées.

                          La question 6 du quiz 2 est effectivement ambigüe, je vais la modifier.

                          Bonne continuation à tous !

                          Baptiste

                          • Partager sur Facebook
                          • Partager sur Twitter
                            20 mai 2016 à 19:40:53

                            salut tt le monde , 

                            j'ai un problème au niveau du code ajax et php de mon projet (réservation siège de cinéma ) : Une fois le client réserve un siège , il choisit le numero de la  place dans la liste déroulante , une fois choisie le numero du siège est supprimé de notre liste déroulante . tout ça ça marche mais le problème c que cette procédure ne s'affiche pas en temps réel , il faut à chaque fois que le client actualise la page pour que la place soit supprimée de la liste déroulante . On a cree 2 tables : 

                            Notre table reservation contient les champs suivants : (siege, reserved (booléen) , nom,prénom,email ) 

                            Voici le code php de notre fichier:  

                             fichier s.php

                            voici le code ajax :

                            voici la partie du code html où ajax doit fonctionner :

                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 mai 2016 à 16:31:23

                              Bonjour à tous,

                              je suis à l'exercice "Modification des couleurs" du chapitre "Donnez du style à vos éléments".

                              Dans la correction je ne comprends pas l'intérêt d'une boucle "for" pour selectionner toutes les balises <div> car par définition getElementsByTagName("div") sélectionne toutes les balises <div> ????

                              Ce fonctionnement me parait être une répétition...

                              A l'origine j'ai réalisé cet exercice sans la boucle "for" et effectivement ça ne fonctionne pas.

                              Pourquoi document.getElementsByTagName("div") seul, ne fonctionne pas?? o_O

                              Bonne journée à vous tous!

                              :)

                                       Brice

                              • Partager sur Facebook
                              • Partager sur Twitter
                                21 mai 2016 à 22:56:00

                                Bonsoir Lebowvsky,

                                Quand tu récupères tes balises <div>, elles sont mises dans un tableau qu'il faut ensuite parcourir avec une boucle for pour changer la couleur du background.

                                A+

                                -
                                Edité par Philippe2463 21 mai 2016 à 22:59:34

                                • Partager sur Facebook
                                • Partager sur Twitter
                                La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                  22 mai 2016 à 18:11:01

                                  Bonjour,

                                  J'en suis à l'activité_2 de ce cours et je planche dessus depuis plus de 10 h.

                                  Je suis arrivé à créer le bouton "ajouter un lien".

                                  J'arrive à le cacher en cliquant dessus et afficher un formulaire javascript et à rendre les champs obligatoire.

                                  Cependant, je suis bloqué pour que les nouvelles saisies dans le formulaire apparaissent dans la page.

                                  Vous pouvez m'aider svp?

                                  Nelf

                                  PS/ je suis reparti de la correction de l'activité 1

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    22 mai 2016 à 18:20:05

                                    Merci beaucoup Philippe2463,

                                    Je comprend mieux le non-fonctionnement de mon code donc...:lol:

                                    Un paragraphe du cours a dû m'échapper, je file relire cette partie de ce pas!!!

                                    Encore merci et A+ !

                                    -
                                    Edité par lebowvsky 22 mai 2016 à 18:22:12

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 mai 2016 à 19:44:57

                                      Nelf a écrit:

                                      Bonjour,

                                      J'en suis à l'activité_2 de ce cours et je planche dessus depuis plus de 10 h.

                                      Je suis arrivé à créer le bouton "ajouter un lien".

                                      J'arrive à le cacher en cliquant dessus et afficher un formulaire javascript et à rendre les champs obligatoire.

                                      Cependant, je suis bloqué pour que les nouvelles saisies dans le formulaire apparaissent dans la page.

                                      Vous pouvez m'aider svp?

                                      Nelf

                                      PS/ je suis reparti de la correction de l'activité 1

                                      Bonsoir Nelf,

                                        As tu fais tous les exercices des paragraphes "À vous de jouer" de chaque chapitre ? Ils permettent de bien dégrossir les difficultés que l'on peut rencontrer par la suite et en l'occurrence pour l'activité 2.

                                      A+

                                      -
                                      Edité par Philippe2463 22 mai 2016 à 19:45:24

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                        22 mai 2016 à 20:19:35

                                        Oui je l'ai fait et j'ai étudié les corrections mais je vois pas comment on peut insérer les données du formulaire. 

                                        Si c'était un formulaire html ce serait bon, mais je l'ai créé en javascript pour montrer que j'ai compris le cours. 

                                        La seule chose que j'ai ajouté au fichier html c'est une balise div pour placer le bouton. J'ai même écrit une regex pour l'URL. 

                                        Un petit coup de main me serait utile. 

                                        Merci d'avance. 

                                        Nelf 

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          23 mai 2016 à 10:38:26

                                          Normalement, tu n'as pas à modifier le html, si tu doit rajouter un <div> tu dois le faire en Javascript!

                                          Courage, tu vas y arriver ou revois le cours...ou "Apprenez à coder en Javascript " si tu ne l'as pas suivi.

                                          A+

                                          -
                                          Edité par Philippe2463 23 mai 2016 à 13:55:55

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                            23 mai 2016 à 13:46:43

                                            Solution Activité

                                            -
                                            Edité par Sakuto 31 mai 2016 à 16:03:19

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              23 mai 2016 à 15:02:34

                                              Bonjour,

                                              Je ne sais pas trop comment faire pour poster le sujet suivant, qui ne répond pas à l'appel à l'aide précédent, je suis désolée !

                                              On m'a orientée vers vous suite à une interrogation lorsque j'ai suivi le cours sur les effets avancés de CSS, et plus spécifiquement les effets sur les hover. Je me suis exercée en créant un grid de 9 cases à effets hover (un carré de 3 cases sur 3 cases) : lorsqu'on passe la souris sur une image d'une des cases, un effet de transition a lieu et on arrive sur un texte explicatif avec une couleur de fond. En gros, on a une image au-dessus et on arrive à un texte "en-dessous" grâce à un effet sur le hover. Seulement ces effets ne marchent pas sur les IPhone et IPad bien qu'il n'y ait aucun pb avec les tablettes Samsung qui sont pourtant des tablettes tactiles.

                                              J’ai vu en recherchant qu’on pouvait résoudre ce problème avec la fonction ontouchstart="" que l’on met au niveau de la balise body : <body ontouchstart="">. J'ai essayé et oh miracle, cela marche très bien sur les IPhone et Ipad, continue de bien fonctionné sur les tactiles Androïd et les tactiles Windows. Pas de problème non plus sur Safari, Opera, Chrome, Mozilla, Edge et IE9. 

                                              Puis-je en savoir d’avantage sur cette fonction ? En quoi consiste-t’elle exactement ? Comment fonctionne-t'elle ? Est-ce une fonction reconnue par les standards du web ?

                                              Car quoiqu’on en dise, lors d’un développement il faut penser à la manière dont on va pouvoir le faire fonctionner sur des tactiles. J’ai réussi à faire fonctionner ces fameux effets hover grâce à cette fonction ontouchstart="" sans réellement comprendre comment cela marchait, c'est ce qui me gêne. J’ai cherché sur le Web, je n’ai rien trouvé de très explicite sur cette fonction ontouchstart.

                                              Lors de mes échanges avec Openclassrooms en rapport avec le cours sur les effets avancés de CSS (https://openclassrooms.com/courses/utilisez-les-effets-avances-de-css-sur-votre-site/les-transformations-3d-1), la question sortant du cadre du cours, on m'a dirigé vers le forum --> Javascript donc vers vous, ontouchstart étant du javascript. 

                                              Merci par avance de votre aide,

                                              Dans l'attente de votre réponse,

                                              Cordialement,

                                              VM

                                              -
                                              Edité par VLMIS 23 mai 2016 à 15:03:58

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                23 mai 2016 à 15:19:55

                                                Edit Sakuto : Merci de ne pas fournir de solutions.

                                                -
                                                Edité par Sakuto 31 mai 2016 à 16:02:56

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  23 mai 2016 à 15:21:00

                                                  Bonjour,

                                                  je suis en train de faire la troisième activité et je rencontre un problème assez gênant que je n'arrive pas à résoudre.

                                                  Quand je veux utiliser https://oc-jswebsrv.herokuapp.com/api/lien j'ai une erreur 400 Bad Request, j'ai beau chercher je ne comprends absolument pas d'où ça peut venir.

                                                  J'arrive à récupérer les liens mais après j'ai ce problème qui bloque tout le code.

                                                  Est-ce que quelqu'un a déjà rencontré ce problème et pourrait me conseiller.

                                                  Merci de votre aide,

                                                  Cordialement,

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    23 mai 2016 à 15:27:28

                                                    Est-ce qu'on peut avoir tes codes ajax et liensweb ?
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      23 mai 2016 à 16:54:39

                                                      Voici mon ajax.js

                                                      function ajaxGet(url, callback) {
                                                          var req = new XMLHttpRequest();
                                                          req.open("GET", url);
                                                          req.addEventListener("load", function () {
                                                              if (req.status >= 200 && req.status < 400) {
                                                                  // Appelle la fonction callback en lui passant la réponse de la requête
                                                                  callback(req.responseText);
                                                              } else {
                                                                  console.error(req.status + " " + req.statusText + " " + url);
                                                              }
                                                          });
                                                          req.addEventListener("error", function () {
                                                              console.error("Erreur réseau avec l'URL " + url);
                                                          });
                                                          req.send(null);
                                                      }
                                                       
                                                      function ajaxPost(url, data, callback, isJson) {
                                                          var req = new XMLHttpRequest();
                                                          req.open("POST", url);
                                                          req.addEventListener("load", function () {
                                                              if (req.status >= 200 && req.status < 400) {
                                                                  // Appelle la fonction callback en lui passant la réponse de la requête
                                                                  callback(req.responseText);
                                                              } else {
                                                                  console.error(req.status + " " + req.statusText + " " + url);
                                                              }
                                                          });
                                                          req.addEventListener("error", function () {
                                                              console.error("Erreur réseau avec l'URL " + url);
                                                          });
                                                          if (isJson) {
                                                              // Définit le contenu de la requête comme étant du JSON
                                                              req.setRequestHeader("Content-Type", "application/json");
                                                              // Transforme la donnée du format JSON vers le format texte avant l'envoi
                                                              data = JSON.stringify(data);
                                                          }
                                                          req.send(data);
                                                      }

                                                      Voici liensWeb.js

                                                      /* 
                                                      Activité 3
                                                      */
                                                      
                                                      var listeLiens = [
                                                          {
                                                              titre: "So Foot",
                                                              url: "http://sofoot.com",
                                                              auteur: "yann.usaille"
                                                          },
                                                          {
                                                              titre: "Guide d'autodéfense numérique",
                                                              url: "http://guide.boum.org",
                                                              auteur: "paulochon"
                                                          },
                                                          {
                                                              titre: "L'encyclopédie en ligne Wikipedia",
                                                              url: "http://Wikipedia.org",
                                                              auteur: "annie.zette"
                                                          }
                                                      ];
                                                      
                                                      // Crée et renvoie un élément DOM affichant les données d'un lien
                                                      // Le paramètre lien est un objet JS représentant un lien
                                                      function creerElementLien(lien) {
                                                          var titreElt = document.createElement("a");
                                                          titreElt.href = lien.url;
                                                          titreElt.style.color = "#428bca";
                                                          titreElt.style.textDecoration = "none";
                                                          titreElt.style.marginRight = "5px";
                                                          titreElt.appendChild(document.createTextNode(lien.titre));
                                                      
                                                          var urlElt = document.createElement("span");
                                                          urlElt.appendChild(document.createTextNode(lien.url));
                                                      
                                                          // Cette ligne contient le titre et l'URL du lien
                                                          var ligneTitreElt = document.createElement("h4");
                                                          ligneTitreElt.style.margin = "0px";
                                                          ligneTitreElt.appendChild(titreElt);
                                                          ligneTitreElt.appendChild(urlElt);
                                                      
                                                          // Cette ligne contient l'auteur
                                                          var ligneDetailsElt = document.createElement("span");
                                                          ligneDetailsElt.appendChild(document.createTextNode("Ajouté par " + lien.auteur));
                                                      
                                                          var divLienElt = document.createElement("div");
                                                          divLienElt.classList.add("lien");
                                                          divLienElt.appendChild(ligneTitreElt);
                                                          divLienElt.appendChild(ligneDetailsElt);
                                                      
                                                          return divLienElt;
                                                      }
                                                      
                                                      ajaxGet(" https://oc-jswebsrv.herokuapp.com/api/liens", function (lien) {
                                                          var contenuElt = document.getElementById("contenu");
                                                      // Parcours de la liste des liens et ajout d'un élément au DOM pour chaque lien
                                                          var listeLiens= JSON.parse(lien);
                                                          listeLiens.forEach(function (lien) {
                                                              var lienElt = creerElementLien(lien);
                                                              contenuElt.appendChild(lienElt);
                                                          });
                                                      });
                                                      
                                                      
                                                      
                                                      // Crée et renvoie un élément DOM de type input
                                                      function creerElementInput(placeholder, taille) {
                                                          var inputElt = document.createElement("input");
                                                          inputElt.type = "text";
                                                          inputElt.setAttribute("placeholder", placeholder);
                                                          inputElt.setAttribute("size", taille);
                                                          inputElt.setAttribute("required", "true");
                                                          return inputElt;
                                                      }
                                                      
                                                      var ajouterLienElt = document.getElementById("ajoutLien");
                                                      
                                                      // Gère l'ajout d'un nouveau lien
                                                      ajouterLienElt.addEventListener("click", function () {
                                                          var auteurElt = creerElementInput("Entrez votre nom", 20);
                                                          var titreElt = creerElementInput("Entrez le titre du lien", 40);
                                                          var urlElt = creerElementInput("Entrez l'URL du lien", 40);
                                                      
                                                          var ajoutElt = document.createElement("input");
                                                          ajoutElt.type = "submit";
                                                          ajoutElt.value = "Ajouter";
                                                      
                                                          var formAjoutElt = document.createElement("form");
                                                          formAjoutElt.appendChild(auteurElt);
                                                          formAjoutElt.appendChild(titreElt);
                                                          formAjoutElt.appendChild(urlElt);
                                                          formAjoutElt.appendChild(ajoutElt);
                                                      
                                                          var p = document.querySelector("p");
                                                          
                                                          // Remplace le bouton d'ajout par le formulaire d'ajout
                                                          p.replaceChild(formAjoutElt, ajouterLienElt);
                                                      
                                                          // Ajoute le nouveau lien
                                                          formAjoutElt.addEventListener("submit", function (e) {
                                                              e.preventDefault();
                                                              var url = urlElt.value;
                                                              // Si l'URL ne commence ni par "http://" ni par "https://"
                                                              if ((url.indexOf("http://") !== 0) && (url.indexOf("https://") !== 0)) {
                                                                  // On la préfixe par "http://"
                                                                  url = "http://" + url;
                                                              }
                                                      
                                                              // Création de l'objet contenant les données du nouveau lien
                                                              var lien = {
                                                                  titre: titreElt.value,
                                                                  url: url,
                                                                  auteur: auteurElt.value
                                                              };
                                                              
                                                              ajaxPost("https://oc-jswebsrv.herokuapp.com/api/lien", lien, function () {
                                                                  var lienElt = creerElementLien(lien);        
                                                                  // Ajoute le nouveau lien en haut de la liste
                                                                  contenuElt.insertBefore(lienElt, contenuElt.firstChild);   
                                                                  // Création du message d'information
                                                                  var infoElt = document.createElement("div");
                                                                  infoElt.classList.add("info");
                                                                  infoElt.textContent = "Le lien \"" + lien.titre + "\" a bien été ajouté.";
                                                                  p.insertBefore(infoElt, ajouterLienElt);
                                                                  // Suppresion du message après 2 secondes
                                                                  setTimeout(function () {
                                                                  p.removeChild(infoElt);
                                                                  }, 2000);
                                                              }, true);
                                                              
                                                              // Remplace le formulaire d'ajout par le bouton d'ajout
                                                              p.replaceChild(ajouterLienElt, formAjoutElt);
                                                              
                                                          });
                                                      });

                                                      Merci de vos conseils pour me dire d'où vient mon problème d'erreur 400


                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        24 mai 2016 à 9:22:16

                                                        Une petite info complémentaire si ça peut aider à me conseiller sur mon problème.

                                                        Quand je vais sur "response body" j'ai le message suivant : "Missing required parameter: titre".

                                                        Je comprends vraiment pas pourquoi j'ai l'impression que tout est bien mis est j'ai mon titre...

                                                        Merci par avance pour votre aide

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          24 mai 2016 à 10:45:40

                                                          Il ne faut pas créer la variable contenuElt dans la fonction de rappel de ajaxGet mais en dehors parce que tu la réutilises plus tard.

                                                          Perso, j'ai essayé ton code avec ça de changé et ça marchait, je ne sais pas si c'était la vraie source du problème mais voilà une piste.

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            24 mai 2016 à 11:04:27

                                                            Super merci. Erreur stupide d'inattention.
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              24 mai 2016 à 11:15:18

                                                              Bonjour,

                                                              Désolé mais je rebondis sur le code.

                                                              A la ligne 76, ça correspond à quoi? Parce que le bouton n'a pas été créé en javascript?

                                                              Il est créé directement en html?

                                                              Cordialement.

                                                              Nelf

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Cours Créez des pages web interactives avec JS

                                                              × 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