Simplification d'un code  (Lu 83 fois) Partager ce sujet Imprimer

1 B


Scorpion1611  06 avril 2021 : 17:54

Bonjour à tous,

Débutant dans le langage javascript, je bute sur une simplification d'un code.
J'ai une "case à cocher" et lorsque je l'active, j'ai des champs (zone de liste et/ou texte) qui apparaissent. Quand je la désactive, ils disparaissent.
J'ai réussi à faire cette manipulation en récupérant des infos sur votre forum.

Voici mon code : (N'oubliez pas que je suis débutant  :Smiley08: )
var str = event.target.name;
var res = str.split("_");
var Nb = (res[2]);

if (this.getField("1-ON_EE_" + Nb).isBoxChecked(0))
    {
            this.getField("2-F_EE_" + Nb).display = display.visible;
            this.getField("3-G_EE_" + Nb).display = display.visible;
            this.getField("4-SB_EE_" + Nb).display = display.visible;
            this.getField("7-M_EE_" + Nb).display = display.visible;
            this.getField("8-SR_EE_" + Nb).display = display.visible;
            this.getField("9-COM__EE_" + Nb).display = display.visible;
    }
else
    {
            this.getField("2-F_EE_" + Nb).display = display.hidden;
            this.getField("3-G_EE_" + Nb).display = display.hidden;
            this.getField("4-SB_EE_" + Nb).display = display.hidden;
            this.getField("7-M_EE_" + Nb).display = display.hidden;
            this.getField("8-SR_EE_" + Nb).display = display.hidden;
            this.getField("9-COM__EE_" + Nb).display = display.hidden;
    }
Pensant qu'il est possible de l'améliorer, j'ai essayé d'adapter mon code avec celui trouvé ici http://abracadabrapdf.net/forum/index.php/topic,501.msg2244.html#msg2244var Bt = getField("BtChoixMontage")
Bt.display = display.visible;
Je l'ai testé en renommant mes différents champs Test1.1, Test1.2, Test1.3, etc mais visiblement j'ai du loupé quelque chose car celui-ci ne fonctionne pasvar str = event.target.name;
var res = str.split("_");
var Nb = (res[2]);

if (this.getField("1-ON_EE_" + Nb).isBoxChecked(0))
    {
            this.getField("Test1").display = display.visible;
    }
else
    {
            this.getField("Test1").display = display.hidden;
    }
Avez-vous une idée de l'erreur que je commets ?

IP archivée


Scorpion1611  06 avril 2021 : 19:26

En fait j'ai trouvé une astuce pour alléger mon code.

Comme j'ai plusieurs cases à cocher je passe par une fonction.
Sur chaque case à cocher j'ai mis le code suivant :
var str = event.target.name;
var res = str.split("_");
var Nb = (res[2]);

Affichage_Calcul(str,Nb)
et la fonction qui va afficher/masquer mes différents champs :function Affichage_Calcul(Nom,Num)
{
    for (var i=1; i<=5; i++) {
        if (this.getField(Nom).isBoxChecked(0))
        {
            this.getField("CAC" + Num + "_" +i).display = display.visible;
        }
        else
        {
            this.getField("CAC" + Num + "_" +i).display = display.hidden;
        }
    }
}

IP archivée


bebarth  06 avril 2021 : 21:04

bonjour,
Tu peux essayer comme ça, ce sera encore un peu plus allégé !
var res = event.target.name.split("_");
var Nb = (res[2]);

Affichage_Calcul(str,Nb);

function Affichage_Calcul(Nom,Num) {
for (var i=1; i<=5; i++) {
if (this.getField(Nom).value!="Off") this.getField("CAC" + Num + "_" +i).display = display.visible;
else this.getField("CAC" + Num + "_" +i).display = display.hidden;
}
}
@+
 :bonjour:

IP archivée


Scorpion1611  07 avril 2021 : 09:06

Génial, merci beaucoup pour ton aide Bebarth  :bravo:

IP archivée