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 :

Initialisation de la propriété CSS display par Javascript


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Points : 107
    Points
    107
    Par défaut Initialisation de la propriété CSS display par Javascript
    bonjour , j'aimerais comprendre un comportement javascript/css d'initialisation de la propriété display d'une div.

    j'ai écris cette fonction qui me cache mes formulaires (chaque formulaire est encapsulé dans une DIV possedant un id unique et une classe "formDiv")

    Pourquoi a la 1ere execution le alert ne me retourne pas l'etat du display et qu'a partir de la seconde , il le fait correctement ....??? (Je precise que dans mon fichier CSS, l'initialisation des displays est correctement faite).

    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
     
    function callForm(nomFormulaire) {
    	var element = document.getElementById(nomFormulaire);
    	var cpt = 1;
     
    	// Cache tous les formulaires
    	var allForms = document.getElementsByTagName("div");	/* On extrait toutes les balises DIV du document	*/
     
    	while (allForms[cpt]){
    	/* Si c'est une DIV associée a la classe formDiv ET differente du formulaire appellé */
    		if ( (allForms[cpt].className == "formDiv") && (allForms[cpt].id != nomFormulaire)  )
    		{
    			alert(allForms[cpt].id +" : "+allForms[cpt].style.display);
    			allForms[cpt].style.display = "none";			/* Alors On la cache	*/	
    		}
    		cpt++;
    	}
     
    	// Affiche le formulaire demandé	
    	element.style.display = "block";
    }
    Merci

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

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


    Citation Envoyé par boutmos Voir le message
    Pourquoi a la 1ere exécution le alert ne me retourne pas l'etat du display et qu'a partir de la seconde , il le fait correctement ....??? (Je precise que dans mon fichier CSS, l'initialisation des displays est correctement faite).
    tu ne peux pas accéder à une propriété CSS de cette manière. C'est pour cette raison qu'à la première exécution ton code n'affiche rien.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Points : 107
    Points
    107
    Par défaut
    Désolé pour la réponse tardive .... fêtes ... Meilleurs Voeux a tous au passage.

    tu ne peux pas accéder à une propriété CSS de cette manière. C'est pour cette raison qu'à la première exécution ton code n'affiche rien.
    Comment accéder "proprement" a une propriété CSS alors ?? Merci.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Pourquoi a la 1ere execution le alert ne me retourne pas l'etat du display et qu'a partir de la seconde , il le fait correctement ....???
    Si, a la première exécution, il te retourne l'état, c'est-à-dire une chaine vide, c'est-à-dire la valeur CSS par défaut.
    Si la propriété n'avait pas été initialisée, le alert te retournerait 'undefined'.
    En revanche, et c'est le sens de la remarque de Auteur, la valeur CSS d'une propriété de style et la valeur JavaScript ne sont pas le mêmes.

    EDIT :
    Pour t'en persuader, essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(allForms[cpt].id +" : "+allForms[cpt].style.toto);
    et tu verras la différence

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Points : 127
    Points
    127
    Par défaut
    Salut,
    essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var display = document.defaultView.getComputedStyle(element, null).getPropertyValue('display');
    sur Firefox et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var display = element.currentStyle['display'];
    sur IE.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Points : 107
    Points
    107
    Par défaut
    ok faut je creuse de la méthode de jojosbiz, hélas j'ai un petit truc important a faire ce matin, je reviendrais dessus aussi tot que possible. Merci d'avance

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Points : 107
    Points
    107
    Par défaut
    j'ai recuperer une fonction qui reprend les 2 lignes de code de jojobizs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function getStyle(el,styleProp)
    {
    	var element = document.getElementById(el);
    	if (element.currentStyle)
    		var y = element.currentStyle[styleProp];
    	else if (window.getComputedStyle)
    		var y = document.defaultView.getComputedStyle(element,null).getPropertyValue(styleProp);
    	return y;
    }
    Mais lorsque j'appelle cette fonction de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var display = getStyle("div","display");
    J'ai toujours une erreur : element is null

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var display = getStyle("div","display");
    Tu as une div avec l'id 'div' ???

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 233
    Points : 107
    Points
    107
    Par défaut
    OOps non , noob que je suis ^^, c'est bon çà fonctionne.

    Merci bcp

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

Discussions similaires

  1. Animation CSS piloté par JavaScript
    Par honizukaz dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 16/08/2014, 23h32
  2. Problème avec propriété CSS 'display'
    Par MAfiO_o dans le forum Mise en page CSS
    Réponses: 21
    Dernier message: 20/04/2009, 16h46
  3. [CSS/Javascript] Changement des propriété CSS dynamiquement
    Par heladar dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/02/2009, 12h33
  4. Lire la valeur d'une propriété CSS par le Javascript
    Par boutmos dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 11/07/2008, 16h56

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