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 :

Changer la couleur de fond d'un bouton 2 fois


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut Changer la couleur de fond d'un bouton 2 fois
    Bonsoir,

    J'ai fais se petit bout code pour changer la couleur d'un bouton lorsqu'on clique dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <SCRIPT LANGUAGE="javascript">
    function change(){
    	if (document.frm.button1.style.background='#66CCCC'){document.frm.button1.style.background='#FF6633';}
    }
    </SCRIPT>
    <input name="button1" type="button" style="background-color:#66CCCC"  onclick="change()"  value="1">
    Cela fonctionne tres bien, seulement j'essaie de revenir à la couleur initiale en re cliquant dessus avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <SCRIPT LANGUAGE="javascript">
    function change(){
    	if (document.frm.button1.style.background='#66CCCC'){document.frm.button1.style.background='#FF6633';alert ("#FF6633");}
    	if (document.frm.button1.style.background='#FF6633'){document.frm.button1.style.background='#66CCCC';alert ("#66CCCC");}
    }
    </SCRIPT>
    <input name="button1" type="button" style="background-color:#66CCCC"  onclick="change()"  value="1">
    Mais ça ne fonctionne pas, ou du moins ça ne reste pas visible... J'ai mis des alert pour bloquer apres chaque ligne pour voir, et la couleur change bien mais c'est fugitif.
    Comment je pourrais faire pour avoir les deux couleurs stables ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Relis ton code et essaie de comprendre ce qui se passe. Si la première condition est vraie, alors la deuxième la sera aussi forcément

    Mets un else pour ta seconde condition et ça fera l'affaire

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Le principe d'un bouton qui allume ou ferme une lumière (et donc une couleur sur fermé et une couleur sur ouvert) c'est que lorsque tu clique la première fois, un test vérifie si un indicateur est à 1, si c'est le cas il le met à 0 et actionne une couleur, sinon il le met à 1 et actionne la deuxième couleur.

    Quand tu clique la deuxième fois, c'est le deuxième cas qui se produit donc tu as ta deuxième couleur.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par SylvainPV Voir le message
    Relis ton code et essaie de comprendre ce qui se passe. Si la première condition est vraie, alors la deuxième la sera aussi forcément

    Mets un else pour ta seconde condition et ça fera l'affaire
    non ça fonctionne pas non plus avec un else j'ai tester en premier avec.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Citation Envoyé par dragonno Voir le message
    Le principe d'un bouton qui allume ou ferme une lumière (et donc une couleur sur fermé et une couleur sur ouvert) c'est que lorsque tu clique la première fois, un test vérifie si un indicateur est à 1, si c'est le cas il le met à 0 et actionne une couleur, sinon il le met à 1 et actionne la deuxième couleur.

    Quand tu clique la deuxième fois, c'est le deuxième cas qui se produit donc tu as ta deuxième couleur.
    J'ai testé aussi avec else if et c'est pareil...

    pour exemple :
    if condition1 alors réslutatx
    else if condition2 alors résultat y
    else if condion3 alors etc...

    Par contre est que le bouton renvoie true lorsqu'il est pressé ?

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    D'après l'algo que je t'ai indiqué, tu peux voir le résultat ici :

    Fais des fichiers avec ces codes ci-dessous et teste

    La page index.html :
    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
    16
    17
    <!DOCTYPE html>
    <html>
     
    <head>
    <title>Accueil</title>
    <link rel="stylesheet" href="index.css" />
    <script language="javascript" src="index.js"> </script>
     
    </head>
     
    <body onload="test()">
     
    <div id="boite" onclick="change()">
    </div>
     
    </body>
    </html>
    La page index.css :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #boite
    {
    width:100px;
    height:30px;
    margin:auto;
    background-color:blue;
    }
    La page 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
    var indic=0;
    maboite=document.getElementById("boite");
    function change()
    {
     
    if (indic==0)
    	{
    	boite.style.backgroundColor="blue";
    	indic=1;
    	}else
    	{
    	boite.style.backgroundColor="red";
    	indic=0;	
    	}
    }
    ça marchera tu verras, ensuite tu applique le systeme à ton probleme

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.frm.button1.style.background='#66CCCC'){...}
    Dans un if, on met une condition, pas une affectation !

    Renseigne-toi sur la différence entre =, == et === !

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Effectivement ça fonctionne ! Merci Dragonno pour ton code !

    Seulement il faut cliquer 2x la premiere fois pour faire changer la couleur ! Mais en modifiant le code de cette façon la :

    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
    16
     
    var indic=0;
    maboite=document.getElementById("boite");
    function change()
    {
     
    if (indic==0) ici
    	{
    	boite.style.backgroundColor="blue";
    	indic=1; ici 
    	}else
    	{
    	boite.style.backgroundColor="red";
    	indic=0;	et ici
    	}
    }
    J'obtiens bien le fonctionnement que je cherchais, à savoir :
    Premier click = rouge
    Deuxieme click = bleu

    en faite pour résumer soit 1, soit 0.

    Merci beaucoup pour vos aides.

    Cordialement.

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Ok c'est cool

    Le fait qu'il faille cliquer deux fois la première fois doit venir du fait que dans le code CSS j'ai défini une couleur de base :
    Il suffit de remplacer le nom de la couleur par ta deuxieme couleur et ça marchera nickel normalement

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2012, 20h12
  2. [WD14] Changer la couleur de fond de TOUS les boutons
    Par orditosh dans le forum WinDev
    Réponses: 4
    Dernier message: 20/07/2009, 13h01
  3. Changer la couleur de fond d'un champ "text"
    Par nic211 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 15/02/2005, 13h50
  4. [POO] Changer la couleur de fond d'un tableau
    Par Netoman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/12/2004, 20h12
  5. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37

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