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 :

incompatibilité sur mozilla ?


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut incompatibilité sur mozilla ?
    BOnjour,

    je n'arrive pas a resoudre un probleme... cette fonction javascript marche à merveille sur IE ... et impossible à exécuter sur mozilla... je ne parviens pas à trouver le pourquoi du comment ... si qqn a une idée.... ? merci d'avance

    si vous avez le temps pouvez vous jettez un coup d'oeil !! ?


    voici ma fonction
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    function afficher(sec)
    {
         thisSec = eval('e' + sec);
         if (thisSec != null){
              if (thisSec.length){
                   if (thisSec[0].style.display != 'none'){
                        for (var i=0;i<thisSec.length;i++) {
                        thisSec[i].style.display = 'none';
                        document.getElementById('lien' + sec).innerHTML = 'Afficher';
                        }
                   }else{
                        for (var i=0;i<thisSec.length;i++) {
                        thisSec[i].style.display = 'inline-block';
                        document.getElementById('lien' + sec).innerHTML = 'Masquer';
     
                        }
                   }
              }else{
                         if (thisSec.style.display != 'none'){
                         thisSec.style.display = 'none';
                          document.getElementById('lien' + sec).innerHTML = 'Afficher';
                         }else{
                           thisSec.style.display = 'inline-block';
                           document.getElementById('lien' + sec).innerHTML = 'Masquer';
                           }
              }
         }
    }
     
     
     
    voici le code HTML :
     
     
    <table width="100%" cellpadding="10" cellspacing="2">
             <tr>
                    <td><b>presentatio ?</b></td>
                     <td><a id="lien1" href="javascript:afficher(1);">Afficher</a></td>
              </tr>
                 <tr id="e1" style="display:none;">
                            <td colspan="2">text</td>
                 </tr>
                          <tr>
                    <td><b>presentatio ?</b></td>
                     <td><a id="lien2" href="javascript:afficher(2);">Afficher</a></td>
              </tr>
                 <tr id="e2" style="display:none;">
                            <td colspan="2">text</td>
                 </tr>
    marie

  2. #2
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    Bonjour,

    j'ai fait un script similaire il y a un petit moment, tu devrais sûrement pouvoir l'adapter (il fonctionnait sous IE et firefox et ...)

    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
    31
     
     
    	if ( document.getElementById && document.getElementById( divID ) ){ // Pour les navigateurs récents
    			Pdiv = document.getElementById( divID );
    			PcH = true;
     
    	}else if ( document.all && document.all[divID] ){ // Pour les veilles versions
    			Pdiv = document.all[ divID ];
    			PcH = true;
     
    	}else if ( document.layers && document.layers[ divID ] ){ // Pour les très veilles versions
     
    			Pdiv = document.layers[ divID ];
    			PcH = true;
     
    	}else{
     
    			PcH = false;
    	}
     
    	if ( PcH ){
    		if(Pdiv.className == 'cachediv'){
    			Pdiv.className = '';
    			document.getElementById("0"+divID).src = '../../images/moins.png';
    		}else{
    			Pdiv.className = 'cachediv';
    			document.getElementById("0"+divID).src = '../../images/plus.png';
    		}
    		//Pdiv.className = ( Pdiv.className == 'cachediv' ) ? '' : 'cachediv';
    	}
    }
    Ce script permettait de cacher une div et changer l'image servant de lien pour cacher la div (image plus ou image moins)... ça correspond un peu près à ce que tu veux faire ... à toi d'adapter

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    je vais tenter ca !!!

  4. #4
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut Re: incompatibilité sur mozilla ?
    Citation Envoyé par mariedesmet
    BOnjour,

    je n'arrive pas a resoudre un probleme... cette fonction javascript marche à merveille sur IE ... et impossible à exécuter sur mozilla... je ne parviens pas à trouver le pourquoi du comment ... si qqn a une idée.... ? merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
         thisSec = eval('e' + sec);
    C'est là que ça bugge. Pour mozilla (et pour moi aussi) eval(e1) ça fait null. Qu'est ce que tu aimerais que ça fasse?????

  5. #5
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    Je pense qu'elle souhaite créer un nouveau nom de variable ... à partir de e qui est dynamique ... enfin je crois avoir compris ça

    Si c'est le cas tu devrais faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(e+"sec")

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut oui
    je crois que c ca...
    j'avoue j'y connais tellement rien en javascript que j'ai fait un copier collé sans comprendre réellement l'entièreté de la fonction ...

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    y a du progres
    seulement je pense que c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('e'+ sec )
    pour l'instant en faisant ca ...

    mozzilla exécute juste les

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('lien' + sec).innerHTML

  8. #8
    m@t
    m@t est déconnecté
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 172
    Points : 122
    Points
    122
    Par défaut
    Oui désolé c'était bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('e'+ sec )
    Sur quel code travailles-tu maintenant ?

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    j'ai simplifié la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function afficher(sec)
    {
         thisSec = document.getElementById('e' +sec)
            if (thisSec.style.display != 'none'){
    	      thisSec.style.display = 'none';
    	      document.getElementById('lien' + sec).innerHTML = 'Afficher';
            }else{
                 thisSec.style.display = 'block';
    	   document.getElementById('lien' + sec).innerHTML = 'Masquer'; 
    	}
     
    }
    dans l'html il fait bien ce que je veux... mais il "creusent" des blocks "vierges" donc ma page devient enorme et plus du tout compact !!!

  10. #10
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par mariedesmet
    dans l'html il fait bien ce que je veux... mais il "creusent" des blocks "vierges" donc ma page devient enorme et plus du tout compact !!!
    A mon avis, il ne faut pas remplacer 'inline-block' par 'block' comme tu l'as fait.....

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    si je laisse 'inline-block' il n'affiche pas le block dans l'html, il fait bien le changement "masquer/afficher". mais le block de text n'apparait pas

  12. #12
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    et bien j'avais la reponse devant les yeux depuis hier, j'ai reconsulté un blog qui en parlait vaguement ... mais j'ai zapé.
    pour que cela fonctionne correctement dans Ie Et firefox... il ne faut

    ni display:'block';
    ni display:'inline-block';

    mais bien un display: '' ;

    et ca marche !!!

    merci a vous ...

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

Discussions similaires

  1. [CSS] Problème d'affichage sur Mozilla
    Par Vinix dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 13/05/2006, 10h18
  2. incompatibilité sur les dates (forms6i)
    Par ramaro dans le forum Forms
    Réponses: 7
    Dernier message: 21/04/2006, 15h39
  3. [MySQL / Access] : incompatibilité sur un INSERT INTO ...
    Par guidav dans le forum Langage SQL
    Réponses: 6
    Dernier message: 13/04/2006, 16h15
  4. équivalent de la propriété unselectable sur Mozilla
    Par jibouze dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 31/01/2006, 14h35
  5. pb avec un script sur mozilla
    Par grospaulo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/12/2004, 16h36

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