Javascript| Aff/caché une div au même endroit

Crabs -  
 Crabs -
Bonjour,

J'aurais besoin d'aide pour un script.

J'ai une <MAP> qui contient des area. Chacune contient un href dans lequel je déclenche le javascript.

J'aimerais que quand je clique sur une area de ma map cela m'affiche un texte à côté. Et quand je clique sur une autre area un autre texte s'affiche à la même place que le précédent et le remplace.

Jusqu'à présent j'utilisais ce script:

<script>
function afficher(id)
{
if(document.getElementById(id).style.display == "none")
{ document.getElementById(id).style.display = "block" }
else
{ document.getElementById(id).style.display = "none" }
}
</script>

Et autour de l'élément que je veux cacher/afficher:

<div id="element1" style="display: none;">
<p> texte cacher </p></div>

<div id="element2" style="display: none;">
<p> texte cacher2 </p></div>

Seulement, il ne vas pas pour ce que je veut faire. Car il ne remplace pas le texte1 mais ajoute le texte2 dessous.

Je voudrais que quand on clique sur "lien 1" :
texte 1 s'affiche.
Si on re-clique sur ce lien 1
texte 1 disparait.
Si on clique sur un autre lien 2:
texte 2 s'affiche à la meme place que le texte 1.

J'espère être assez clair pour que vous puissiez m'aider.
Merci.
Crabs.

2 réponses

  1. Defouille Messages postés 404 Statut Membre 54
     
    Bonjour,

    voila une petite fonction javascript qui pourrait t'aider :

    var id_element_courant = null ;
        function montrer_cacher_elements(id_element)
        {
            element = document.getElementById(id_element) ;
            element_courant = document.getElementById(id_element_courant) ;
            if(id_element_courant == id_element) // cacher l'element si on reclique
            {
                element.style.display = 'none' ;
                id_element_courant = null ;
            }
            else
            {
                element_courant.style.display = 'none' ;
                element.style.display = 'block' ;
                id_element_courant = id_element ;
            }
        }


    il suffit de l'appeler avec l'id du div contenant ton texte :)

    En espérant que ça t'aide ;)
    0
  2. Crabs
     
    Salut,

    Merci pour ta réponse.

    Voilà ce que j'ai fait:
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script>
    var id_element_courant = null ;
        function montrer_cacher_elements(id_element)
        {
            element = document.getElementById(id_element) ;
            element_courant = document.getElementById(id_element_courant) ;
            if(id_element_courant == id_element) // cacher l'element si on reclique
            {
                element.style.display = 'none' ;
                id_element_courant = null ;
            }
            else
            {
                element_courant.style.display = 'none' ;
                element.style.display = 'block' ;
                id_element_courant = id_element ;
            }
        }
    </script>
    </head>
    
    <body>
    
        <a href="javascript:montrer_cacher_elements('id_element');"> Clik 1</a>
         
        <div id="id_element" style="display:none">
        <p>Liste 1</p>
        <ul><li> Element 1</li>
        <li> Element 1</li></ul></div>
    
    </body>
    </html>


    Mais ça ne fonctionne pas. Est-ce que j'ai fait une erreur dans l'interprétation de ton code? :s
    Je suis très très nul en javascript XD.
    0