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 :

[débutant] compatibilité FF et IE - display


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut [débutant] compatibilité FF et IE - display
    Bonjour,

    Je cherche à faire une FAQ. Lorsque l'on clique sur une catégorie, cela affiche les questions de celle-ci. J'ai défini deux classes, une visible qui va m'afficher le block ( display:block; ) et une autre invisible qui me cachera le block ( display:none; ).

    Le code HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <h1>FAQ</h1>
    <ul id="faq">
    	<li><a href="#" onclick="afficher(this);return false;">+</a> titre2
    		<ul>
    			<li>Question 2.a</li>
    			<li>Question 2.b</li>
    			<li>Question 2.c</li>
    		</ul>
    	</li>
    </ul>
    Le code 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
     
    function afficher(obj){
    	mon_ul = obj.parentNode.getElementsByTagName("ul");
    	if (mon_ul.length>0){
    		if (mon_ul[0].getAttribute("class")=="visible"){
    			mon_ul[0].setAttribute("class","invisible");
    			obj.firstChild.data = "+";
    		}
    		else {
    			mon_ul[0].setAttribute("class","visible");
    			obj.firstChild.data = "-";
    		}
    	}
    }
    Quand je clique sur le "+" se trouvant dans mon tag li, les questions appartenant à la liste s'affichent. Tout est okay sur FF, mais quand arrive IE, là viennent les problèmes. En effet, les questions de la liste ne veulent pas s'afficher lorsque le "+" est sélectionné ...

    Quelqu'un aurait-il une solution à ce problème?
    Je vous remercie.

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 654
    Points : 11 149
    Points
    11 149
    Par défaut
    bonjour,


    Le code est à adapter selon tes besoins, mais je pense qu'il répondra à ta question.

    Code html : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    <html>
    <head>
    <title></title>
    <style type="text/css">
    <!--
    .conteneur{
     height: 150px;
     width: 200px;
     border: 5px #AAAAAA ridge;
     background-color: #CCCCCC;
     overflow: auto;
     padding: 5px;
    }
    .clListe{
     display: none;
    }
    .item{
     cursor: pointer;
    }
     
    //-->
    </style>
     
    <script type="text/javascript">
    <!--
    var oldObj = null;
    function gestionListe(idObj)
    {
      var liste = document.getElementById(idObj);
     
      if (oldObj==liste && liste.style.display!="block")
         oldObj = null;
     
      liste.style.display = "block";
     
      if (oldObj!=null)
         oldObj.style.display = "none";
     
      oldObj = liste;
    }
     
     
    //-->
    </script>
     
    </head>
     
    <body>
    <div class="conteneur">
     
    <span class="item" onclick="gestionListe('liste1')">Afficher liste 1</span><br>
    <ul class="clListe" id="liste1">
    <li><a href="page1.htm">Item 1</a></li>
    <li><a href="page2.htm">Item 2</a></li>
    <li><a href="page3.htm">Item 3</a></li>
    </ul>
     
    <span class="item" onclick="gestionListe('liste2')">Afficher liste 2</span><br>
    <ul  class="clListe" id="liste2">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    </ul>
     
    <span class="item" onclick="gestionListe('liste3')">Afficher liste 3</span><br>
    <ul  class="clListe" id="liste3">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
    <li>Item 4</li>
    </ul>
     
    </div>
     
    </body>
     
    </html>

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Points : 66
    Points
    66
    Par défaut
    J'te remercie Auteur, ton code m'a bien aidé.
    Pour résoudre le problème, j'ai rajouter une ligne de code dans mon fichier JS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_ul[0].style.display = "none"
    Merci encore ^^

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par LaseLiep
    J'te remercie Auteur, ton code m'a bien aidé.
    Pour résoudre le problème, j'ai rajouter une ligne de code dans mon fichier JS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_ul[0].style.display = "none"
    Merci encore ^^
    C'est surtout que l'attribut class n'est pas à utiliser mais c'est className.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Points : 151
    Points
    151
    Par défaut
    comme d'habitude !! class marche très bien comme attribut, sauf chez qui ? Internet Explorer !!

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 654
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 654
    Points : 11 149
    Points
    11 149
    Par défaut
    Citation Envoyé par highman
    comme d'habitude !! class marche très bien comme attribut, sauf chez qui ? Internet Explorer !!
    c'est tellement facile comme explication..... quand on ne cherche pas à comprendre

    remplace :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mon_ul[0].setAttribute("class","invisible");
    par
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mon_ul[0].className = "invisible";
    et là, ô miracle, ça marche : l'attribut class et reconnu quel que soit le navigateur.

    Néanmoins, "visible" comme nom de classe est inaproprié car c'est une valeur de l'attribut visibility (même si je doute qu'il y ait un risque de conflit).

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

Discussions similaires

  1. [Débutant] Compatibilité avec les processeurs
    Par kripteks dans le forum Assembleur
    Réponses: 7
    Dernier message: 13/04/2014, 14h11
  2. Quels est la compatibilité de .style.display
    Par arnolem dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/07/2006, 17h11
  3. Réponses: 1
    Dernier message: 22/07/2006, 17h09
  4. [Débutant]The XML page cannot be displayed
    Par lolodelp dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 19/04/2006, 10h03
  5. [Install] [Débutant] Pb de compatibilité JVM
    Par k-reen dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 30/06/2004, 12h53

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