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 :

style.display block, none.. IE et firefox


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    D�tails du profil
    Informations personnelles :
    �ge : 53
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Par d�faut style.display block, none.. IE et firefox
    Bonjour,

    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
    <script type='text/javascript'>
    function ChangeDisplay(id)
    	{
    		//On cache tout ...
    		var descriptions=new Array()
    		descriptions = document.getElementsByName('description');
    		for (var i=0;i<descriptions.length;i++)
    		{
    			descriptions[i].style.display='none';
    		}
     
    		//Et on affiche la bonne
    		var etatcourant = document.getElementById(id).style.display;
     
    		if (etatcourant=='block')
    		{
    			document.getElementById(id).style.display='none';
    		}
    		else
    		{
    			document.getElementById(id).style.display='block';
    		}
    	}
    </script>

    Voici le bout de code qui me pose un probleme.. enfin, deux problemes differents, un sur IE et un autre sur firefox..


    Donc, pour resumer le comportement voulu, on a dix produits, chacun avec un lien "descriptif", quand on clique dessus, ca l'affiche, si on reclique dessus, ca la cache. Si la description d'un produit est affich�e et qu'on clique sur le lien "description" d'un autre produit, ca cache celle qui est ouverte.. (il ne doit jamais y'en avoir qu'une seule d'affich�e en meme temps)

    Les soucis :
    Sur IE, la description s'affiche et se cache correctement .. le souci vient du fait qu'il ne cache pas la description d'un produit quand on clique sur un autre descriptif.. (le bout de code "on cache tout")

    Sur firefox, c'est l'inverse.. ce qui ne marche pas, c'est le fait de cacher la description quand on reclique sur le meme lien.. par contre quand on clique sur un autre lien ca cache bien la premiere avant d'afficher la deuxieme..

    Ou sont les erreurs de code ? Merci !

    Ah, et un bout d'html, histoire de..

    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
          <div class='boite_sejour' id='PKG-4-5092-P4C3-DJ'>
    	<a title='' href='/scripts/sejours/produits.php?id=PKG-4-5092-P4C3-DJ'>
     
    		<img src='/ola/rdata/package/PKG-4-5092-P4C3-DJ/photo' width='83' height='55' border='0' class='img_sejour' alt=''/> 
    	</a>
            <ul>   
                  <li class='pays_sejour'><a title=' ' href='/scripts/sejours/produits.php?id=PKG-4-5092-P4C3-DJ'>Tunisie</a></li>     
                  <li class='ville_sejour'>- <a title=' ' href='/scripts/sejours/produits.php?id=PKG-4-5092-P4C3-DJ'>Tunis</a></li>
                  <li class='hotel_sejour'>Karthago Hammamet 5*</li>
                  <li class='pension_sejour'>8j/7n Demi pension</li>
                  <li class='departde_sejour'>d&#xE9;part de Paris</li>
     
    		      <li class='prix_sejour'><a title=' ' href='../scripts/sejours/produits.php?id=PKG-4-5092-P4C3-DJ'>259 &#x80;</a></li>
    		      <li class='descriptif_sejour'><a href='#description_PKG-4-5092-P4C3-DJ' Onmouseover="this.style.cursor='pointer'" Onmouseout="this.style.cursor='default'" Onclick='ChangeDisplay("description_PKG-4-5092-P4C3-DJ");'>Descriptif</a></li>
              </ul>
         </div>
         <div name='description' id='description_PKG-4-5092-P4C3-DJ' style='display:none;' class='description'>
     
     
    Situation
    <p>Situ&eacute; directement en front de mer au cour de la station baln&eacute;aire de Yasmine Hammamet, ce bel h&ocirc;tel de luxe est &agrave; environ 65km de l'a&eacute;roport de Tunis et &agrave; 7km &agrave; peine du centre de la vieille ville d'Hammamet. Au nord du golfe portant son nom s'&eacute;tend la toute premi&egrave;re station baln&eacute;aire de la riviera tunisienne : Hammamet, avec les villes voisines de Nabeul et de Yasmine. A Nabeul, au nord d'Hammamet, s'activent les meilleurs ateliers d'artisanat locaux : distillation d'essences florales de rose et de jasmin, articles en cuir, vaisselle en cuivre, bijoux en m&eacute;taux pr&eacute;cieux. et de la poterie r&eacute;put&eacute;e : on moule ici d'authentiques amphores depuis la plus haute antiquit&eacute;. A Yasmine, derni&egrave;re zone touristique en date au sud d'Hammamet, se concentrent golfs, centres de thalassoth&eacute;rapie, discoth&egrave;ques, marina de plaisance, casino, patinoire, parc d'attraction, un complexe de bars, restaurants et boutiques inspir&eacute; de l'architecture traditionnelle des m&eacute;dinas. jouxtant les h&ocirc;tels &agrave; l'arri&egrave;re de la longue promenade du front de mer. Terre de farniente et de loisirs, mais aussi terre d'histoire abondant de sites arch&eacute;ologiques antiques d'exception : l'un des legs majeurs de la civilisation romaine n'est-il pas dans ces oliveraies et ces vignobles dont on tire une gastronomie fine &agrave; l'huile d'olive et des vins rouges et ros&eacute;s d'appellation d'origine contr&ocirc;l&eacute;e ? Terre de nature, enfin, o&ugrave; l'on contemple la beaut&eacute; sauvage des c&ocirc;tes escarp&eacute;es de la presqu'&icirc;le du Cap Bon, face au d&eacute;troit de Sicile &agrave; l'est, et o&ugrave; le regard suit la courbe des plages du golfe d'Hammamet &agrave; l'ouest jusqu'&agrave; se perdre &agrave; l'horizon. <br />
     
    <br />
    </p>
         </div>
    et y'a 10 bloc de ce genre par page..


    Merci de votre aide, par avance !

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    144
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 144
    Par d�faut
    Salut
    Je n'ai pas la r�ponse � ta question mais juste une observation, pourquoi ne pas utiliser une variable afin de stocker l'id du bloc courant comme �a tu seras pr�cis�ment celui que tu devras cacher au prochain appel de la fonction.

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    D�tails du profil
    Informations personnelles :
    �ge : 53
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Par d�faut
    c'est une idee a creuser.. je vais voir ca !
    Sinon, si des bonnes ames ont d'autres idees..? surtout que je n'ai aucune erreur javascript..

  4. #4
    Membre �clair�
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    495
    D�tails du profil
    Informations personnelles :
    �ge : 53
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 495
    Par d�faut
    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
    <script type='text/javascript'>
    var bloc_courant;
    function ChangeDisplay(id)
    	{
    		//alert(bloc_courant);
     
    		if(document.getElementById(bloc_courant))
    		{
    			document.getElementById(bloc_courant).style.display='none';
    		}
     
     
    		bloc_courant=id;
     
    		//On cache tout ...
    		var descriptions=new Array()
    		descriptions = document.getElementsByName('description');
    		for (var i=0;i<descriptions.length;i++)
    		{
    			descriptions[i].style.display='none';
    		}
     
    		//Et on affiche la bonne
    		var etatcourant = document.getElementById(id).style.display;
     
    		if (etatcourant=='block')
    		{
    			document.getElementById(id).style.display='none';
    		}
    		else
    		{
    			document.getElementById(id).style.display='block';
    		}
    	}
    </script>

    Voila la modif, quand j'active le "alert(bloc_courant)" ca met sort bien le bloc en question.. mais ca ne le cache pas !

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    144
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 144
    Par d�faut
    hmmmm ...
    Je ne sais pas �a � l'air d'�tre correct, �a marche chez moi
    tu peux toujours rajouter
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    alert (id+" - "+etatcourant+" - "+document.getElementById(id));
    Attend chercherais tu � cacher au deuxi�me clic aussi ????
    dans ce cas
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    if (id == bloc_courant)
    {
        document.getElementById(id).style.display = 'none';
        bloc_courant = '';
        return;
    }

  6. #6
    R�dacteur
    Avatar de marcha
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2003
    Messages
    1 571
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 1 571
    Par d�faut
    Salut,

    Tu fixes syst�matiquement la propri�t� display � none pour toutes
    les descriptions en d�but de fonction.

    Le test qui essaie de connaitre l'�tat courrant n'a plus de sens, ce
    sera toujours none !

    Tu peux �viter de toucher � la description qui concerne l'id en modifiant
    ton code ainsi:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    for (var i=0;i<descriptions.length;i++)
    {
    	if(descriptions[i].id!=id) descriptions[i].style.display='none';
    }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Display block/none en cascade
    Par emmeline.a dans le forum G�n�ral JavaScript
    R�ponses: 12
    Dernier message: 27/07/2010, 12h14
  2. IE et .style.display = 'block' ;
    Par defacta dans le forum G�n�ral JavaScript
    R�ponses: 8
    Dernier message: 19/03/2010, 16h18
  3. style.display ne marche pas sous Firefox
    Par Lenezir dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 03/03/2008, 10h24
  4. [W3C] Probl�me avec la balise div et le style "display:none&a
    Par Golork dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 8
    Dernier message: 14/11/2005, 20h30
  5. Pb style display avec Firefox mal appliqu�
    Par frochard dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 13/07/2005, 23h48

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