Test de condition problématique

kylling Messages postés 20 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 8 décembre 2006 - 8 déc. 2006 à 22:32
rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 - 9 déc. 2006 à 23:53
Salut,

J'aimerais que ce script récupère la valeur '
display'
d'un style css attaché à mon document.
Après avoir testé si la valeur correspond à 'block' ou 'none'.
Le problème, est que mon test vérifie toujours la première condition.

function montre(id) {
var d = document.getElementById(id);
alert(d.style.display);
if(d.style.display='none'){d.style.display='block';}
else if(d.style.display='block'){d.style.display='none';}
}

Quelqu'un a t-il une solution à me proposer ?
Merci d'avance
Kylling

6 réponses

rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 3
8 déc. 2006 à 23:27
Salut

Lorsque tu donnes un style à un élément avec une feuille de style css les valeurs ne sont pas intégrées dans l'objet javascript style!!!
Tu peux par contre l'affecter et le changement prendra forme et si tu as déja modifié une propriété dans l'objet style de ton élément alors tu pourras faire le test mais qu'à cette condition.

Donc dans ton cas tu ne pourras pas tester la valeur display si celle-ci est définie par css

-- The Rubik's Man --
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 déc. 2006 à 10:40
Bonjour,

= c'est l'affectation d'une valeur à une variable,
c'est tester la variable





if (d.style.display=='none')
      {d.style.display='block';}



else  {d.style.display='none'; }









<hr />
Cordialement Bul [
mon Site
] [
=Bul
M'écrire

]
<hr />
0
rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 3
9 déc. 2006 à 13:17
A oui cette erreur m'avait échapé...

Mais bon ce qui est sur c'est que le 1er coup que tu vas lancer le test ca passera toujours dans le 2eme meme si dans ton style css tu avais donné display:none.

Voila

-- The Rubik's Man --
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 déc. 2006 à 14:10
salut Rubicks,
   non,non... ça baigne...

<HTML Lang="fr">
<HEAD>
<Script type="Text/JavaScript">
function euh()
{
 if ( document.getElementById("txt").style.display=="none" )
      { document.getElementById("txt").style.display="inline"; }
 else { document.getElementById("txt").style.display="none"; }
}
</Script>
</HEAD>

  
</HTML>

<hr />
                        Cordialement                Bul          [mon Site]    [M'écrire]
<hr />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 déc. 2006 à 14:41
et si le style n'est pas là,
soit il faut regarder className ou tester "l'inverse":



<HTML Lang="fr">
<HEAD>
<Script type="Text/JavaScript">
function euh()
{
 if ( document.getElementById("txt").style.display!="none" )
      { document.getElementById("txt").style.display="none"; }
 else { document.getElementById("txt").style.display="inline"; }
}
</Script>
</HEAD>

 
</HTML>



 







<hr />
               Cordialement          Bul       [mon Site]    [M'écrire]
<hr />
0
rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 3
9 déc. 2006 à 23:53
oui la je suis d'accord mais teste en mettant une classe dans une balise style par exemple

<style type="text/css">
.test {
   display:block;
}
</style

blablabla

si tu fais document.getElementById('test').style.display tu auras une valeur nulle ou plutot une chaine de caractere vide et ca tant que on ne modifie pas la valeur de l'objet style en javascript. donc c'est impossible de vérifier la valeur display instanciée avec css.

Si c'est possible avec la propriété cssText si on définie le style au moyen d'une classe mais cela est totalement impossible si on utilise en css l'id de la div avec par exemple #test { ... }

Voilà lorsque à l'intérieur d'une balise tu mets style="...." la c'est automatiquement transcrit en objet javascript alors que lorsque dans le head tu inclus du css la ce n'est pas du tout pareil

voilà @+

-- The Rubik's Man --
0
Rejoignez-nous