Associer plusieurs actions à "onclick"

macunaima -  
 macunaima -
Bonjour,

Je voudrais associer plusieurs actions à un même événement (onclick) dans un lien hypertexte. Pour clarifier, je voudrais que onclick ouvre une div, mais avant cela, qu'il referme celle qu'il a ouvert précédement, si il en a déjà ouverte une. Est-ce possible, et quelle est la syntaxe que je dois utiliser? Pour l'instant j'ai ceci:

DANS HEAD:
<script type="text/javascript">
<!--
function toggle(eltId)
{
var elt = document.getElementById(eltId);
elt.style.display = (elt.style.display == "block") ? "none" : "block";
}

// -->
</script>
<script type="text/javascript">
<!--
var bloc= 0;
// -->
</script>

DANS BODY:

<a href="javascript:void(0)" onclick="toggle (bloc); toggle('texte_n2 #COMPTEUR_BOUCLE'); bloc='texte_n2 #COMPTEUR_BOUCLE';">bla bla bla </a>

Où:
toggle(bloc) referme la div dont le nom est stoqué dans la var bloc
toggle(''texte_n2 #COMPTEUR_BOUCLE') ouvre la div correspondant au choix du visiteur
bloc='texte_n2 #COMPTEUR_BOUCLE' stoque le nom de la div dans la variable bloc pour le tour suivant.

Eh bien, ça ne marche pas. Où est l'erreur???
Configuration: Mac OS X
Safari 419.3

1 réponse

  1. PhP Messages postés 1774 Statut Membre 606
     
    Bsr

    Bien qu'il soit possible de placer plusieurs fonctions les unes à la suite des autres dans le onclick , il est plus propre d'appeller une unique fonction JavaScript de de faire les différents appels depuis cette fonction. Moins il y a de code JavaScript dans le code HTML mieux c'est.

    Voici ce que ça peut donner :

    <html>
    <head>
    <style>
    
    .bloc
    {
    	display : none;
    	margin-left : 20px;
    }
    </style>
    
    <script type="text/javascript"> 
    <!-- 
    
    function toggle(eltId) 
    { 
    var elt = document.getElementById(eltId); 
    elt.style.display = (elt.style.display == "block") ? "none" : "block"; 
    } 
    
    // Variable globale stockant l'identifiant du dernier bloc passé à la fonction toggleExclusif
    var lastId = null;
    
    function toggleExclusif(eltId)
    {
    	if (lastId) toggle(lastId);
    	toggle(eltId);
    	lastId = eltId;
    }
    // --> 
    </script>
    </head>
    <body>
    <p>
    <a href="javascript:void(0)" onclick="toggleExclusif('bloc1');">Toggle bloc 1</a>
    <div class="bloc" id="bloc1">
    Ceci est le bloc 1
    </div>
    </p>
    <p>
    <a href="javascript:void(0)" onclick="toggleExclusif('bloc2');">Toggle bloc 2</a>
    <div class="bloc" id="bloc2">
    Ceci est le bloc 2
    </div>
    </p>
    </body>


    Voilà
    8
    1. macunaima
       
      GENIAL, ÇA MARCHE!!! ouf... C'est magique. Merci.
      0