PBM de concaténation

[Résolu]
Signaler
Messages postés
43
Date d'inscription
samedi 11 décembre 2004
Statut
Membre
Dernière intervention
19 mai 2009
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
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

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
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]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
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]
Messages postés
43
Date d'inscription
samedi 11 décembre 2004
Statut
Membre
Dernière intervention
19 mai 2009

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.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
>>

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]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
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]