Donnez vie à vos documents numériques !
 

Script qui marche en partie

abracadabraPDF Forums PDF – Général Script qui marche en partie

  • Créateur
    Sujet
  • #75933
    michel c.
    Participant

    Bonjour, j’ai un script qui permet de changer la couleur de champs si une case est cochée, il fonctionne jusqu’à l’indice 29 et après il ne fonctionne plus.

     

    Merci

    Attachments:
    You must be logged in to view attached files.
Affichage de 4 réponses de 1 à 4 (sur un total de 4)
  • Auteur
    Réponses
  • #75935
    Merlin
    Maître des clés

    Salut

     

    Pour moi rien ne fonctionne, je crois que c’est dû au script RAZ car la console le signale en erreur à chaque clic sur une coche.

    Il y a aussi une accolade mal placée dans les fonctions laCouleur, qui fait que la condition else ne peut jamais s’exécuter.

    Je ne comprend pas les fonctions “laCouleur”, si je lis le script il doit changer successivement  les couleurs de tous les champs en fonction de la valeur de chaque coche rencontrée. C’est à dire à changer la couleur de tous les champs à chaque fois qu’il rencontre une coche.

    C’est donc forcément la dernière qui leur donnera leur couleur définitive.

    Je suppose donc que ce n’est pas le but, que veux tu faire exactement ?

     

    Dans le script RAZ il manque une accolade, et il tente de génèrer une variable à partir d’un élément qui n’existe pas : var P3

    Mais je ne comprend par quoi il est déclenché.

    Quoi qu’il en soit il s’exécuterait plus vite en le simplifiant ainsi :

    function Raz() {
    //decoch();

    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);

    var b = nomChamp.split(".");
    var P1 = (b[0]);
    // var P2 = (b[1]); // inutile
    // var P3 = (b[2]); // b2 n'existe pas

    if (P1=="A" || P1=="AA" || P1=="B" || P1=="BB") {this.getField(nomChamp).value="";}
    }

    }

    #75936
    bebarth
    Maître des clés

    bonjour,
    Pourquoi revérifier tous les champs à chaque fois ???
    Tu peux utiliser cette fonction :
    function laCouleur(nomChamp) {
    if (!this.getField(nomChamp).isBoxChecked(0)) {
    this.getField(nomChamp.toUpperCase()).textColor=color.black;
    if (nomChamp.split(".")[0]=="a") this.getField(nomChamp.toUpperCase()).fillColor=color.red;
    else this.getField(nomChamp.toUpperCase()).fillColor=color.blue;
    } else {
    this.getField(nomChamp.toUpperCase()).fillColor=color.transparent;
    if (nomChamp.split(".")[0]=="a") this.getField(nomChamp.toUpperCase()).textColor=color.red;
    else this.getField(nomChamp.toUpperCase()).textColor=color.blue;
    }
    }
    Et l’appeler avec :
    laCouleur(event.target.name);

    Pour écrire cette ligne avec toutesles cases à cocher tu peux exécuter de la console :
    for (var i=0; i<this.numFields; i++) {
    var nomChamp=this.getNthFieldName(i);
    var f=this.getField(this.getNthFieldName(i));
    if (f.type=="checkbox" && (this.getNthFieldName(i).indexOf("a.")==0 || this.getNthFieldName(i).indexOf("b.")==0)) f.setAction("MouseUp","laCouleur(event.target.name);")
    }

    @+
    😎

    Attachments:
    You must be logged in to view attached files.
    #75938
    jctremblay
    Maître des clés

    La solution de bebarth est vraiment plus simple et élimine le recalcule. J’aime…

    #75945
    michel c.
    Participant

    Merci, je viens de tester et effectivement, le script est beaucoup plus rapide !

Affichage de 4 réponses de 1 à 4 (sur un total de 4)
  • Vous devez être connecté pour répondre à ce sujet.