Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lien non fonctionnel dans une variable

Problème en JavaScript

Sujet résolu
    15 novembre 2018 à 19:32:39

    Bonsoir,

    Je viens vous poser une question : j'utilise un script qui écrit du texte lettre par lettre et j'ai rajouté des balises html dedans dont des liens. Et liens fonctionnent mais seulement après plusieurs cliques. Puis-je faire quelque chose?

    Mon script se trouve ici :

    https://www.le-max-de-culture.fr/si_notre_dame/index.php

    Je vous remercie par avance de vos réponses

    Bonne soirée

    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2018 à 14:43:02

      Bonjour

      malgré que tout le texte soit affiché, ton script continue de tourner.

      Utilise la longueur du tableau dans lequel tu as enregistré le texte pour que quand tout est affiché tu arrêtes l'appel de la fonction setInterval("changeMessage()",100).

      Après tel quel, tu seras obligé d'attendre la fin du script pour que les liens soient correctement cliquables si je puis dire, à cause du innerHtml qui recharge à chaque caractère le contenu de ton bloc.

      Xavier

      • Partager sur Facebook
      • Partager sur Twitter
        16 novembre 2018 à 15:15:45

        Bonjour,

        Merci beaucoup de votre réponse !

        Comment puis-je faire pour arrêter l'appel de la fonction setInterval?

        Dois-je mettre par exemple un if avec le nombre de caractère?

        Merci par avance de votre réponse.

        Bonne journée

        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2018 à 15:48:24

          en utilisant le clearInterval

          function changeMessage()
          {
          document.getElementById("bloc").innerHTML = texte[actual_texte];
          actual_texte++;
          if(actual_texte >= texte.length)
          actual_texte = nb_msg;
          clearInterval(loop)
          }
          if(document.getElementById){
          var loop = setInterval("changeMessage()",100) //enregistre le intervalID pour l'utiliser dans le clearInterval
          
          };
          

          essaie ça

          • Partager sur Facebook
          • Partager sur Twitter
            16 novembre 2018 à 16:06:55

            Bonjour,

            Merci pour votre réponse !

            Je viens d'uploader la nouvelle version avec votre code pour que vous puissiez voir car cela ne marche pas... mon texte ne s'affiche plus. 

            Ai-je fais une erreur?

            • Partager sur Facebook
            • Partager sur Twitter
              16 novembre 2018 à 16:10:32

              tu as laissé un }; en trop
              • Partager sur Facebook
              • Partager sur Twitter
                16 novembre 2018 à 16:12:34

                QZIG a écrit:

                tu as laissé un }; en trop


                Cela donne la même chose si je l'enlève :

                <section>
                  <div id="bloc"></div>
                  <script>
                
                var chaine = "<p>C:\\user\\Lycée_Générale_Technologique\\Notre_Dame> Sciences de l'Ingénieur (SI)</p><p>Bienvenue !</p><p>Vous ne savez pas ce qu'est \"Course en cours\", rendez-vous dans la rubrique <a href=\"course_cours.php\" class=\"page\">\"Course en Cours\"</a></p><p>Pour connaître les équipes du lycée, rendez-vous dans la rubrique <a href=\"equipes.php\" class=\"page\">\"Equipe\"</a></p>";
                var nb_car = chaine.length;
                var tableau = chaine.split("");
                texte = new Array;
                var txt = '';
                var nb_msg = nb_car - 1;
                for (i=0; i<nb_car; i++) {
                texte[i] = txt+tableau[i];
                var txt = texte[i];
                }
                
                actual_texte = 0;
                function changeMessage()
                {
                document.getElementById("bloc").innerHTML = texte[actual_texte];
                actual_texte++;
                if(actual_texte >= texte.length)
                actual_texte = nb_msg;
                clearInterval(loop)
                }
                if(document.getElementById){
                var loop = setInterval("changeMessage()",100) //enregistre le intervalID pour l'utiliser dans le clearInterval
                };
                /*
                bouton = document.getElementById('button_1');
                bouton.onclick = function resultat()
                {
                  document.getElementById('resultat_fonctionnement').innerHTML="<p>resultat</p>"
                };
                */
                
                
                </script>
                </section>


                Y-a-t-il une autre erreur?

                -
                Edité par Maxime L 16 novembre 2018 à 16:13:18

                • Partager sur Facebook
                • Partager sur Twitter
                  16 novembre 2018 à 16:19:43

                  sur le site je l'ai toujours, ré upload le fichier
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 novembre 2018 à 16:21:10

                    QZIG a écrit:

                    sur le site je l'ai toujours, ré upload le fichier


                    Ça y est ! C'est uploadé :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 novembre 2018 à 16:26:54

                      oups ma faute

                      function changeMessage()
                      {
                      document.getElementById("bloc").innerHTML = texte[actual_texte];
                      actual_texte++;
                      if(actual_texte >= texte.length)
                        actual_texte = nb_msg;
                      
                      if(actual_texte>nb_car)
                        clearInterval(loop)
                      }
                      if(document.getElementById){
                      var loop = setInterval("changeMessage()",100) //enregistre le intervalID pour l'utiliser dans le clearInterval
                      };



                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 novembre 2018 à 16:30:54

                        J'ai uploadé avec votre code sauf que j'ai le même problème qu'au départ, le lien s'effectue après plusieurs dizaines de cliques...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 novembre 2018 à 16:35:41

                          au début de ta fonction changeMessage() peux-tu ajouter un console.log(actual_texte) et un console.log(nb_car) stp
                          • Partager sur Facebook
                          • Partager sur Twitter
                            16 novembre 2018 à 16:41:47

                            ok c'est la ligne ci-dessous qui pose pb, si elle ne te sert à rien retire la sinon il faudra changer un petit bout de code

                            if(actual_texte >= texte.length)
                              actual_texte = nb_msg;
                            • Partager sur Facebook
                            • Partager sur Twitter
                              16 novembre 2018 à 16:47:48

                              Je l'ai enlevé et j'ai uploadé mais à la fin de l'écriture, cela affiche "undefined" donc ces lignes sont nécessaires sauf si vous avez un moyen de pallier à cette erreur.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                16 novembre 2018 à 16:59:12

                                function changeMessage()
                                {
                                document.getElementById("bloc").innerHTML = texte[actual_texte];
                                actual_texte++;
                                 
                                if(actual_texte>=nb_car)
                                  clearInterval(loop)
                                }
                                if(document.getElementById){
                                var loop = setInterval("changeMessage()",100) //enregistre le intervalID pour l'utiliser dans le clearInterval
                                };
                                aller ça devrait le faire maintenant

                                -
                                Edité par QZIG 16 novembre 2018 à 17:03:19

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  16 novembre 2018 à 18:31:58

                                  Cela fonctionne effectivement !

                                  Merci énormément de votre aide précieuse !

                                  Merci beaucoup !

                                  Le sujet est résolu !

                                  Bonne soirée

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Lien non fonctionnel dans une variable

                                  × 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