IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Une même palette couleur pour plusieurs actions différentes


Sujet :

JavaScript

  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut Une même palette couleur pour plusieurs actions différentes
    bonjour a tous

    j'avance dans la construction dynamique de mon wysiwyg
    je rencontre un soucis sans doute mineur

    je n'avais au depart que les option fontcolor ou font.backcolor par execcommand
    mais maintenant j'ai

    5 boutons qui ouvre la palette
    1. forecolor
    2. backcolor
    3. backcolordiv
    4. bordercolordiv
    5. bordercolorimage


    ces 5 boutons change la valeur d'une variable globale "modepal"et leur donne la valeur de leur nom
    et appelle la fonction d'affichage de la palette

    dans cette fonction en bouclant sur tout les boutons couleur de la palette je voudrais leur attribuer une fonction en fonction de modepal

    1° si c'est "foreColor" ou "backColor" alors la fonction sera :
    execCom(modepal, "false", "#" + this.id.substring(4));

    2° si c'est "backcolordiv" ce sera
    function(){actifelem.style.backcolor="#" + this.id.substring(4);}

    3° si c'est "bordercolordiv"alors ce sera :
    function(){actifelem.style.border="1px solid " +this.id.substring(4);}

    4° si c'est "bordercolorimage" ce sera :
    function(){activeimage.style.border="1px solid " +this.id.substring(4);}

    j'avoue n'avoir aucune idée du comment faire un multi if/else en JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function evenementpalette(mode) {
        var btcs = palet.getElementByTagName("BUTTON");
        for (vari = 0; i < btcs.length; i++) {
            if (modepal === "foreColor" || modepal === "backColor") {
                btcs[i].addEventListener("click", function() {
                    execCom(modepal, "false", "#" + this.id.substring(4));
                });
            } else {
                if (modepal === "backdivcolor") {
                    btcs[i].addEventListener("click", function() {
                        actifelem.style.backgroundColor = "#" + this.id.substring(4);
                    });
                }
              }
    }
    actifelem et active image étant des variables globales représentant un div ou une image


    d'autre part quand je me sert de JSHint.com pour vérifier les erreurs
    il me dit de ne pas faire de fonction dans une boucle dans les commentaire de droite sur la capture ci dessous

    Nom : Capture.JPG
Affichages : 94
Taille : 70,9 Ko
    des idées?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    JSHint reste sommaire, et tes erreurs sont en warning.

    pour lui addEventListener est une fonction "à action différée" comme une autre et c'est pour cette raison qu'il ne l'aime pas.
    C'est son boulot de relever tout ce qui peut éventuellement clocher dans le code, mais après c'est à toi de vérifier complètement.

    Sortir du code avec zéro warning n'est pas le but de cet outil.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bon je me suis rabattu sur un evenement globale de la palette (1 seul evenement)

    et j'utilise event target pour le bouton et modepal pour le choix
    voila comment je créé la palette a l'ouverture du fichier et lui attribut directement le click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function createpalette() {
        var pal = document.createElement("DIV");
        pal.id = "palette";
        pal.style.visibility = "hidden";
        document.body.appendChild(pal);
        palet = pal;
        for (var c = 0; c < coul.length; c++) {
            var btc = document.createElement("BUTTON");
            btc.className = "Bcolor";
            btc.style.backgroundColor = "#" + coul[c];
            btc.id = "btc_" + coul[c];
            palet.appendChild(btc);
            palet.addEventListener("click", evenementpal, false);
        }
    }
    et l'evenement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function evenementpal(event) {
        //alert(event.target.outerHTML);
        if (modepal === "foreColor") {
            execCom('foreColor', false, event.target.style.backgroundColor);
        }
        if (modepal === "backColor") {
            execCom('backColor', false, event.target.style.backgroundColor);
        }
        if (modepal === "backdivcolor") {
            actifelem.style.backgroundColor = event.target.style.backgroundColor;
        }
        if (modepal === "bordurediv") {
            actifelem.style.border.Color = event.target.style.backgroundColor;
        }
    }
    c'est plus simple en effet
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bon je me suis rabattu sur un evenement globale de la palette (1 seul événement);
    Ca c'est mieux codé,

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour psychadelic
    oui
    j'avais plus moins compris ca en constatant que meme les noms de fonction etait pour lui des variables indefinie

    il y a un autre outils pour verifier et eventuellement corriger les erreurs par ce que c'est vraiment pratique ce truc
    entre ca et JSbeautifier mes scripts sont propres et plus clair avec l'indentation pour moi qui me plante toujour a oublier un"{/}/(/)" c'est top !!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/04/2017, 12h06
  2. Même contenu pour plusieurs tables différentes
    Par reitsab dans le forum WinDev
    Réponses: 7
    Dernier message: 04/12/2009, 10h36
  3. Même vue pour plusieurs actions
    Par loudo dans le forum MVC
    Réponses: 2
    Dernier message: 08/09/2008, 17h23
  4. [MySQL] plusieurs rubriques provenants d'une même table devant passer les var différents par
    Par wallash dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/06/2007, 09h13
  5. Réponses: 6
    Dernier message: 24/05/2007, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo