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 :

[DOM] recupération zIndex aléatoire


Sujet :

JavaScript

  1. #1
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut [DOM] recupération zIndex aléatoire
    Si je click "Affiche index2" après le chargement la valeur de retour zIndex est vide.
    Si je click "Change index2" puis "Affiche index2" à nouveau l'zIndex vaut 5, normal.

    Pourquoi ne vaut-il rien au premier passage alors qu'il est définit dans le CSS avec la valeur 2?
    Je ne comprends pas tous sur ce coup
    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
    <html>
    <head>
    <title>z-index</title>
    <style type="text/css" title="text/css">
    	body{ background-color: #000;}
     
    	#z2{
    		font-family: arial;
    		font-size: 12px;
    		font-weight: bold;
     
    		padding: 4px;
    		border: 2px solid lightgrey;
    		width: 180px; height: 140px;
    		position: absolute; left: 75px; top: 80px;
    		background-color: yellow;
    		z-index: 2;
    	}
    </style>
    </head>
     
    <body>
    <button onclick="alert(document.getElementById('z2').style.zIndex);">Affiche index2</button>
    <button onclick="document.getElementById('z2').style.zIndex = '5';">Change index 2</button>
     
    	<div id=z2>z-index 2</div>
     
    </body>
    </html>
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Je ne pense pas que ça puisse provoquer l'erreur que tu constates, mais : a priori les valeurs des propriétés doivent être mises entre double quotes (pour l'id de ton div "z2") ...

    Si ça ne change rien à ton problème (ce qui est probable).... j'ai rien dit ^^ (mais ça ne fera pas de mal en tout cas )
    Au moins tu y auras (un tout petit peu) gagné en termes de respect des normes xhtml...

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  3. #3
    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 : 53
    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 ne vaut-il rien au premier passage alors qu'il est définit dans le CSS avec la valeur 2?
    Précisément parce qu'il est défini en CSS et pas dans la propriété style de ton objet HTML en JavaScript, ce que tu corriges avec ton autre bouton.
    Il ne faut pas confondre les attributs de balises, les attributs de style et les propriétés JavaScript.

    EDIT :
    Pour accéder aux valeurs définies en CSS, il faut passer par les propriétés rules / cssRules de la collection styleSheets
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Hum
    Ah ben j'ai bien fait de participer à ce thread j'ai appris un truc plus qu'utile moi ^^
    Merci à not' gourou ruminant de service

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    un petit display block aiderait peut etre ?

    sinon get computed style ...

    ou jquery doit avoir un offset zindex ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Il ne faut pas confondre les attributs de balises, les attributs de style et les propriétés JavaScript.
    Merci à tous, je découvre à mes dépends ces singulières propriétés qui ne sont pas héritées du CSS.
    Citation Envoyé par Bovino Voir le message
    Pour accéder aux valeurs définies en CSS, il faut passer par les propriétés rules / cssRules de la collection styleSheets
    Tu veux dire comme le suggère SpaceFrog d'utiliser 'getComputedStyle' ?
    Je suis en train de regarder cette fonction qui me semble pour le moment un peu obscure.
    Je test et je reviens ici si besoin
    Citation Envoyé par SpaceFrog Voir le message
    un petit display block aiderait peut etre ?
    Le 'block' c'est pour faire propre ? car s'il a une nécessité dans le cas présent, je n'arrive pas à la voir.
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    non Bovinon suggerait d'attaquer le css en le parsant ...
    cssRules ... selector ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  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 : 53
    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
    Ensuite, cela dépend de ce que tu souhaites récupérer.
    Si c'est le style tel qu'il est affiché, effectivement, getComputedStyle / currentStyle sont suffisants, si c'est le style tel qu'il a été déclaré, alors il faudra parser les feuilles de style.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Ensuite, cela dépend de ce que tu souhaites récupérer.
    Si c'est le style tel qu'il est affiché, effectivement, getComputedStyle / currentStyle sont suffisants, si c'est le style tel qu'il a été déclaré, alors il faudra parser les feuilles de style.
    Je crois comprendre ce que tu veux dire. Au chargement du document c'est le style définit par la CSS qui est pris en compte. Mais dès qu'il y a manipulation avec du code JS, c'est document.getElementById('z2').style.zIndex qu'il faut utiliser.
    Dans ce cas je suggère de définir le style affiché susceptible d'être modifié, uniquement à partir des propriétés JS. Qu'en pense tu ?

    En attendant, j'ai obtenu un résultat. Mais cela me semble très verbeux, y a t il a ton avis une méthode plus rapide pour obtenir le même résultat ? (bien entendu si la solution proposée plus haut est adopté ce code sera inutile).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function getStyle(obj){
    		var doc = document.defaultView;
    		var elem = document.getElementById(obj);
     
    		var curStyle = doc.getComputedStyle(elem, "");
    		var elemz = curStyle.getPropertyValue("z-index");
     
    		alert(elemz);
    	}
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  10. #10
    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 : 53
    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
    Si tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var elem = document.getElementById(obj);
    var elemz;
    if(elem.currentStyle){
        elemz = elem.currentStyle.zIndex;
    }
    else if(window.getComputedStyle){
        elemz = window.getComputedStyle(elem, null).zIndex;
    }
    Tu obtiens le z-index actuel (celui défini dans le CSS s'il n'a pas été modifié, celui défini en JavaScript si tu l'as modifié)
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Effectivement c'est smart, mais cela ne s'invente pas ?

    Pour ma part j'ai mis en place une solution qui fonctionne. Elle consiste à initialiser la valeur de mes zindex durant la procédure onload="init();".
    Cela à l'avantage de ne pas m'encombrer avec le test. Au niveau lisibilité à posteriori par contre c'est surement moins bon.

    Il faut faire le choix.

    Merci en tous cas

    A+
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  12. #12
    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 : 53
    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
    Hop la, attention !!!
    Le test if else ne sert pas à vérifier si le style est défini, il prend juste en compte des méthodes différentes entre IE et FF !
    currentStyle => méthode IE
    getComputedStyle() => méthode DOM
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  13. #13
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Ola !! autant pour moi, je n'avais pas compris.
    Je ne suis jamais obligé de prendre en compte IE car je travail en Intranet, j'ai délibérement dès le départ choisit FF et quelques Safari, je ne regrette rien, surtout depuis que j'utilise JS.

    En tous cas je prends note, cette discussion m'aura apportée de nouvelles connaissances. Merci
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  14. #14
    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 : 53
    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
    Citation Envoyé par riete Voir le message
    Je ne suis jamais obligé de prendre en compte IE car je travail en Intranet, j'ai délibérement dès le départ choisit FF et quelques Safari, je ne regrette rien, surtout depuis que j'utilise JS.
    Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var elem = document.getElementById(obj);
    var elemz = window.getComputedStyle(elem, null).zIndex;
    suffit
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

Discussions similaires

  1. Java/DOM: recupérer le contenut entre deux balises
    Par asbb.asbb dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 26/02/2015, 19h55
  2. [SQL] Recupération aléatoire
    Par ThitoO dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/11/2006, 14h31
  3. [MySQL] [SQL] Recupération aléatoire
    Par ThitoO dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/11/2006, 14h31
  4. comment puis-je recupérer l'extesion du fichier?
    Par mirella dans le forum Langage
    Réponses: 7
    Dernier message: 14/08/2002, 15h56
  5. Récupérer 10 nb différents avec un calcul aléatoire
    Par BXDSPORT dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2002, 02h35

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