PBM de concaténation

Résolu
nuclearprout Messages postés 43 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 mai 2009 - 15 déc. 2007 à 15:41
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 15 déc. 2007 à 16:51
Bonjour !




J'ai un gros problème de concaténation de variable, je suis à deux doigts de faire mon truc mais en désespoir de cause, je me retourne vers vous autres. Voici le  code qui me pose soucis, je le remets dans son contexte pour qu'on comprenne bien.




function puker()
            {
              pre_puker = new Array();
              var quant = document.getElementById("feed_quantity").value;
              var qual = document.getElementById("feed_data").value;
             
              if (isNaN(document.getElementById("feed_quantity").value)== true) {
                  pre_puker.push("Com' ON ! We asked a number...");
              }
              else if(document.getElementById("feed_quantity").value.length >= 5) {
                pre_puker.push("ATTENTION : You asked for a lot of DEGENERATIONS >> Your machine may buzz !");
              }
              if (pre_puker.length > 0) {
                  var output = pre_puker.join("\n");
                  alert(output);
              }
              else {
                  var puke = new Array();
                puke.push(qual);
                puke.join(" ");
                var colorizer = new Array();
                    colorizer[1] = "#66CC00";
                    colorizer[2] = "#66CC33";
                    colorizer[3] = "#66CC66";
                    colorizer[4] = "#669900";
                    colorizer[5] = "#669933";
                    colorizer[6] = "#66FF00";
                    colorizer[7] = "#66FF33";
                    colorizer[8] = "#33CC00";
                    colorizer[9] = "#33CC33";
                    colorizer[10] = "#339900";
                    colorizer[11] = "#336600";
                    colorizer[12] = "#99CC00";
                    colorizer[13] = "#999900";
                    colorizer[14] = "#99FF00";
                    colorizer[15] = "#00FF99";
                    colorizer[16] = "#00FF33";          
                  for (var i = 1; i <= quant; i++) {
                    var sort_code = (Math.round((Math.random()*15)+1));
                    var sort_color = colorizer[sort_code];
                    var sort_pt = (Math.round((Math.random()*10)+6));
                    puke = puke + " "+qual+" <\/span>";
                    document.getElementById("puker").innerHTML = puke;
                }
              }      
            }



C'est simple, j'ai deux champs ; un dont l'id est feed_quantity, un autre dont l'id est feed_data. Dans l'un on tape une chaîne de caractères, dans l'autre un nombre et ça vous recrache (puke) le tout dans une la div "puker". Jusque là, rien de bien compliquer, néanmoins, mon soucis est la pitite ligne que vous avez dû remarquer...



puke = puke + " "+qual+" <\/span>";

Cette dernière ligne ne fait pas bugger le code, mais ne fait pas ce que je voudrais non plus, c'est à dire qu'elle ne me permet pas d'attribuer au sein de chaque span une des couleurs du tableau colorizer et ce, de façon aléatoire.
Exemple d'une source DOM lorsque la fonction est éxecutée :


<span style="font-size: 12pt;" color:#66cc00=""> ENTER SOMETHING HERE </span>

Vous remarquerez donc que les guillements ne sont pas au bon endroit. Voilà, j'ai juste ça à régler, peut-être que ce que j'éssaie de faire n'est pas du tout possible, mais je pense que ça l'est.
Merci à tous !









Today is the present past of tomorrow.

5 réponses

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 déc. 2007 à 15:56
Bonjour,

    tu utilises une function et un id qui ont le même nom ( puker )
        remplacer document.getElementById("pukerxxx").innerHTML = puke;
    color pas dans le style
        puke += " "+qual+" <\/span>";

    ça devrait le faire ( enfin... mieux, sans préjuger du reste )

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 déc. 2007 à 15:56
Bonjour,

    tu utilises une function et un id qui ont le même nom ( puker )
        remplacer document.getElementById("pukerxxx").innerHTML = puke;
    color pas dans le style
        puke += " "+qual+" <\/span>";

    ça devrait le faire ( enfin... mieux, sans préjuger du reste )

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
3
nuclearprout Messages postés 43 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 19 mai 2009
15 déc. 2007 à 16:15
Merci beaucoup chef !

Pour le même nom entre l'id et la fonction, j'avais pas fait attention et ne pensais même pas que cela pouvait être problématique (si ce n'est question propreté de code). Pour l'opérateur += , c'est en effet bien moins bête aussi. Par contre, j'ai vraiment du mal à comprendre la logique de la concaténation (c'est bien de cela dont il s'agit non ?). Si tu connais une ressource ou un site qui détaille ça en profondeur et qui permet de bien en comprenre la logique, je te serai très reconnaissant de bien vouloir m'en fournir l'URL.

Merci !





Today is the present past of tomorrow.
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 déc. 2007 à 16:48
>>

logique de la concaténation
>>c'est bien de cela dont il s'agit non ?
    oui, oui

    var a=a+"toto"; ça ajoute "toto" derrière le contenu de la variable a.
       et a ? que contient-elle ? rine, elle n'est pas initialisée, donc ça plante

    et a+="toto"; c'est une  "abréviation" origine C qui est
       la même chose que a=a+"toto";
    comme a="toto"+a; c'est a=+"toto";





   les soucis avec javascript commencent avec le "style" de la variable
       ( nombre ou string) ... qu'on ne définit pas !!!

           a=5;     a+=10;   ==> a=15
mais a="5"; a+=10;   ===>   a=510







<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 déc. 2007 à 16:51
quand à l'ID et le nom de la fonction, j'ai tellement vu de
    problèmes de ce style... dans tous les langages !
    ( pas sûr que ça passe d'ailleurs en js ? )
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
0
Rejoignez-nous