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 :

Bouton alternant 2 fonctions sur le même événement onClick


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Bouton alternant 2 fonctions sur le même événement onClick
    Bonjour à tous,

    J'ai un problème de grande débutante.
    Je cherche à créer un seul bouton / image :
    - qui change selon qu'il est cliqué (afficher - masquer - afficher -masquer etc) ;
    - et qui permet d'afficher / masquer une ligne de tableau.
    J'ai les deux fonctions, elles marchent impec'. Je les ai déjà grapillées sur ce site-même !!

    Code du changement d'image du bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var tab_image = new Array(2);
    for (var i=0; i< tab_image.length;i++)
        tab_image[i]= new Image();
    tab_image[0].src='img/ensavoirplus.gif';
    tab_image[1].src='img/ensavoirmoins.gif';
     
    var n=0;
     
    function change() {
    n= ++n;
    if (n == tab_image.length) n=0;
    window.document.image.src=tab_image[n].src;
    }
    Le code de l'afficher / masquer de la ligne de tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function aff (  )
    {
        tr = document.getElementById('tr2');
        tr.style.display = "";
    }
    function cach (  )
    {
        tr = document.getElementById('tr2');
        tr.style.display = "none";
    }
    Il y a dans le body un tableau et deux images qui ont les propriétés de cach() et aff().

    Avez vous une idée pour qu'un seul bouton, changeant lui-même, permette d'afficher ou masquer une ligne de tableau ?
    Je vous en remercie tous vivement !
    Claire qui galère depuis hier ;-)

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function bascule()
    {
       var tr = document.getElementById('tr2');
       if (tr.style.display == "block") tr.style.display = "";
       else tr.style.display = "block";
    }

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Fonction bascule : ligne masquée au début
    Bonjour !
    Merci infiniment d'avoir répondu si vite et votre solution correspond tout à fait ... à ce que je n'aurais pas pensé ! ;-)
    Je l'ai testée mais elle ne masquait pas de ligne.
    Je l'ai transformée ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function bascule()
    {
       var tr = document.getElementById('tr2');
       if (tr.style.display =="block") tr.style.display = "none";
       else tr.style.display = "block";
     
    }
    et elle donne un résultat, mais sans doute faux. Au rafraichissement de la page, les deux lignes (tr1 et tr2) sont visibles, or j'aimerais que tr2 soit masquée au début. Je pense m'être tompée dans la fonction, mais où ?
    Auriez-vous la gentillesse de regarder mon erreur ?
    Merci vivement,
    Claire

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par claire67 Voir le message
    Au rafraichissement de la page, les deux lignes (tr1 et tr2) sont visibles, or j'aimerais que tr2 soit masquée au début
    pour la ligne du tableau qui correspond à tr2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <tr style="display:none">.... </tr>
    ERE
    Quand une tête pense seule, elle devient folle.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Merci !
    Merci à vous deux qui m'avez si rapidement répondu. Tout marche impeccablement bien.

    Je mets en pièce jointe le code complet et vous souhaite une bonne fin de journée,
    Claire
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    En restant dans ta logique, mais en transformant la fonction bascule pour que tu puisse la réutiliser et en simplifiant ton tableau d'images (parce que dans ton cas c'est possible)

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    </head>
    <script langage="JavaScript">
    function bascule(tr)
    {
       if (tr.style.display == "block") tr.style.display = "none";
       else tr.style.display = "block";
    }
    //pour deux petites images, faut pas s'embêter
    var tab_image = ['img/ensavoirplus.gif', 'img/ensavoirmoins.gif'];
    var n=0;
    function change() {
      document.image.src = tab_image[++n % 2];
    }
    </script>
     
    <body>
    <table id="F">
       <tr id="tr1"><td>1-1</td></tr>
       <tr id="tr2" style="display:none"><td>2-1</td></tr>
    </table>
     
        <a href="javascript: bascule(document.getElementById('tr2'));change()">
                <img name="image" src="img/ensavoirplus.gif" border=0 alt="+ d'info" /></a>
    </body>
    </html>
    ERE
    Quand une tête pense seule, elle devient folle.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Bouton 2 fonctions : génial !
    Bonjour !
    Merci beaucoup pour cette simplification, c'est vrai, c'est plus simple ainsi puisqu'il n'y a que deux images.

    Un grand merci !

    Claire

  8. #8
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par claire67 Voir le message
    Bonjour !
    Merci beaucoup pour cette simplification, c'est vrai, c'est plus simple ainsi puisqu'il n'y a que deux images.

    Un grand merci !

    Claire
    Mais c'est vraiment dédié à ton cas car il n'y a plus de préchargement des images.

    ERE
    Quand une tête pense seule, elle devient folle.

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

Discussions similaires

  1. [ZF 1.11] mettre deux boutons d'un formulaire sur la même ligne
    Par rebhihabib dans le forum Zend_Form
    Réponses: 3
    Dernier message: 05/08/2012, 01h29
  2. plusieurs Fonctions sur un même onclick
    Par momosan77 dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 19/12/2010, 15h41
  3. Rendre un bouton disabled (deux actions sur le même bouton)
    Par beegees dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/11/2008, 10h46
  4. Plusieurs actions sur un même évènement ?
    Par beegees dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/08/2008, 17h35
  5. Bouton alternant 2 fonctions sur le meme evenement onClick
    Par Rocca dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/01/2006, 09h16

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