Partage
  • Partager sur Facebook
  • Partager sur Twitter

affichage d'un tableau dans un <div>

Sujet résolu
    11 juin 2009 à 23:00:59

    bonjour,
    je fais un programme qui code les lettres en chiffres
    par exemple 'a vaut 2' signifie que toutes les lettres sont décalé d'un cran. et donc le mot {a,b,c} donneras {2,3,4}.

    mon soucis est que mon programme renvoie 'undefined', je veux dire, ma page s'affiche sans erreur, mais quand je lance le programme, la réponse est non définis. Et je ne vois pas trop ou est l'erreur

    pour info :
    dans des inputs, type text, j'ai:

    * "textOriginal" qui corresponds au texte à traduire
    * "lettreOriginal" (1 seul caractère) qui correspond à 'a' dans mon exemple ci dessus
    * "lettreCoder" (1 seul carectère) qui correspond à '2' dans mon exemple

    et enfin, j'ai une balise pour indiquer ou écrire la solution : <div id="textCoder"></div>

    J'espère que vous pourrez me dépanner. Je précise que ce n'est pas pour un devoir et que j'apprends le JS pour mon site (pour le plaisir).

    mon code javascript
    function b_alphadeca(monForm)
    {        // on code en chiffre !
            var i=0;
            var regelText = /^[a-zA-Z]$/;
            var regelNum = /^[0-9]$/;
            var long=monForm["textOriginal"].value.length;        // longueur du texte à traduire
            var clee=0;        // entier
            var textFinal = new Array(long);        // tableau d'entier
                            
            // clee de codage : c'est le décalage introduit
            clee = monForm["lettreCoder"].value - chiffre_lettre(monForm["lettreOriginal"].value);
                            
            // on transforme le texte original en chiffrage numérique, avec la cléé de codage
            for (i=0; i<long; i++)
            {
            if (regelText.test(monForm["textOriginal"].value.charAt(i) ) )  
            {         // (int) on prend une lettre à traduire et on la chiffre
                    textFinal[i] = lettre_chiffre(monForm["textOriginal"].value.charAt(i))+clee;
            }
            else {textFinal[i]= monForm["textOriginal"].value.charAt(i);}                                                
           }
           document.getElementById('textCoder').innerHTML=textFinal.value; // (1)
    };
     
    // retourne le chiffre correspondant à la lettre : a-1, b-2 ...                
    function lettre_chiffre(lettre){  
       var tableau= new Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
       var i=0;
       for ( i=0; i<26; i++)
       {
          if (lettre = tableau[i])
          { return i+1;
          }
        }
    };


    (1) si je mets un .value, j'aurais comme réponse 'undefined'
    si je mets un .join(''), j'aurais un NaN pour chaque lettre (a,b,c) donne (NaN,NaN,NaN)
    j'ai aussi essayé avec une boucle for,mais le resultat est le même.

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2009 à 23:13:02

      Hm... à la ligne 11 tu appelles la fonction chiffre_lettre(). Mais dans le code que tu as donné, seule la fonction lettre_chiffre() est présente ?
      • Partager sur Facebook
      • Partager sur Twitter
        12 juin 2009 à 0:04:53

        Oups !! L'étourdis !! Je ne l'avais pas vu cette fautes !
        le programme lettre_chiffre retourne une lettre en chiffre ! J'ai aussi fait le programme inverse, mais il ne nous sert pas ici.

        Merci ! Mais néanmoins, j'ai toujours une erreur ! La réponse est encore 'undefined' !
        • Partager sur Facebook
        • Partager sur Twitter
          12 juin 2009 à 0:30:57

          D'ailleurs dans cette fonction lettre_chiffre, je pense que ce serait plus simple d'utiliser la méthode indexOf() . ^^ Inutile de réinventer la roue :)

          En plus, ton erreur vient de là.
          Regarde ta condition ligne 31, tu as mis "=" au lieu de "=="

          Bref, avec indexOf() tu n'aurais sans doute pas eu ce problème :p


          Enfin, pour afficher le tableau, utilise .join(".") . "value" ne fonctionnera pas.
          • Partager sur Facebook
          • Partager sur Twitter
            12 juin 2009 à 1:21:18

            Merci, tout fonctionne ! Si vous voulez voir le résultat :
            page code de mon site

            je suis bien sur ouvert à toute suggestion !
            • Partager sur Facebook
            • Partager sur Twitter
              12 juin 2009 à 1:52:43

              De rien.

              Des suggestions, oui, plusieurs. ^^

              Tout d'abord, oublier les frames et se mettre à PHP :p
              Ta vie sera transformée :)

              Ensuite, tu pourrais éventuellement suivre mon conseil et utiliser indexOf() dans la fonction dans la fonction lettre_chiffre().

              Pour plus d'infos sur indexOf() :
              https://developer.mozilla.org/fr/R%C3% [...] Array/indexOf

              Bonne continuation ;)
              • Partager sur Facebook
              • Partager sur Twitter

              affichage d'un tableau dans un <div>

              × 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