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 :

Acc�s au css depuis javascript


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 33
    Par d�faut Acc�s au css depuis javascript
    Bonjour,

    J'aimerais calculer la taille des marges autour d'un de mes objets html.
    Mon objet est d�clar� de cette mani�re dans mon fichier html :
    Le code css est situ� dans une feuille de style � part :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    #viewer
    {
    	width : 100%;
    	height : 100%;
    	margin-left : 300px;
    	margin-right : 0px;
    }
    Au sein de mon fichier javascript j'effectue la boucle suivante afin de calculer la somme des marges des objets contenant mon objet viewer (seul mon objet viewer poss�de une marge dans le cas actuel) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    var offsetTop = 0;
    var offsetLeft = 0;
    var p = document.getElementById('viewer');			
    while(p.style != undefined){
       offsetTop += p.style.marginTop;
       offsetLeft += p.style.marginLeft;
       p = p.parentNode;
    }
    A la suite de cela, offsetLeft devrait contenir 300. Hors il ne contient rien. La valeur de p.style.marginLeft de mon objet viewer a pour valeur "undefined" quand je l'affiche dans la console.

    Par contre si je place le css dans le fichier html comme suit, tout marche bien :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <div id="viewer" style="width:100%;height:100%;margin-left:300px;margin-right:0px"></div>
    Pourquoi ne puis-je pas acc�der au css si il se trouve dans une feuille de style externe au html ?

    Merci de vos r�ponses

    Cordialement

    David

  2. #2
    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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    a quoi �a sert �a ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    while(p.style != undefined){
    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 !

  3. #3
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 33
    Par d�faut
    A chaque fois je r�cup�re le conteneur parent afin de v�rifier si celui-ci a une valeur diff�rente de z�ro dans ses propri�t�s marges. J'utilise :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    while(p.style != undefined){
    afin de v�rifier s'il existe encore un objet p�re. Si la propri�t� style existe alors c'est un objet html (document, page, div etc..). Sinon si la propri�t� n'existe pas alors cela veut dire que l'on est remont� trop haut, on a donc atteint le dernier conteneur (document), on s'arr�te alors.

  4. #4
    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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    A chaque fois je r�cup�re le conteneur parent
    tu es dans une boucle ?

    tu ne nous montre pas le code entier ?
    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 !

  5. #5
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Moi je trouve que �a ressemble � de l'attente active... Boucler pour attendre quelque chose n'est pas une bonne fa�on de faire en JS, en g�n�ral.

    https://developer.mozilla.org/en/DOM...tComputedStyle
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  6. #6
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 33
    Par d�faut
    Excus� moi mais j'ai du mal � vous suivre ^^ ....
    O� voyez vous de l'attente ? ^^

    Je n'attends jamais, � partir d'un div donn�, je v�rifie si se div a une marge, si oui j'enregistre sa valeur. Une fois cela fait je r�cup�re le div parent, (soit le div qui contient notre premier div) Je v�rifie alors si il poss�de une marge .. etc

    Jusqu'� arriver au conteneur le plus haut dans la hi�rarchie, soit document sauf erreur.
    Afin de savoir si p.parentNode n'est pas null (en d'autre mot savoir si p est contenu par un autre �l�ment html et donc que je n'ai pas encore atteint le conteneur le plus haut dans la hi�rarchie) j'acc�de � une propri�t� du conteneur afin de savoir si elle existe. Si c'est le cas cela signifie que l'�l�ment parent existe. J'ai choisi style, mais j'aurais pu choisir autre chose. Si la propri�t� existe c'est que j'ai bien r�cup�r� un �l�ment html.
    J'avais trouv� cette exemple sur internet, cela fonctionne bien.

  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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    heu un if tout court au lieu du while non?
    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
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 33
    Par d�faut
    il faut forcement boucler pour remonter tous les �l�ments parents non ?

  9. #9
    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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    encore faudrait il tester que le parent existe ?
    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 !

  10. #10
    Membre actif
    Inscrit en
    F�vrier 2005
    Messages
    47
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2005
    Messages : 47
    Par d�faut
    Tu peux passer par du JQ peut-etre ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $("#selecteur").css('margin-left');
    pour voir si sa marche comme cela

  11. #11
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    D�cembre 2010
    Messages
    1 009
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : sans emploi

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 1 009
    Par d�faut
    Tu n'as pas acc�s au contenu des d�finitions css, mais tu peux par contre r�cup�rer des informations de tes dom-objects comme l'offset(left ou top) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    while(p){
    	offsetTop += p.offsetTop?p.offsetTop:0;
    	offsetLeft += p.offsetLeft?p.offsetLeft:0;
    	p = p.parentNode;
    }

  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 : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Tu n'as pas acc�s au contenu des d�finitions css
    Si, c'est possible via la collection cssRules.
    Ceci dit, c'est assez compliqu� � maitriser (donc tr�s peu utilis� et peu connu) et offre un int�r�t assez limit� compar� � getComputedStyle ou currentStyle.
    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
    Invit�
    Invit�(e)
    Par d�faut
    Citation Envoy� par Watilin Voir le message
    Moi je trouve que �a ressemble � de l'attente active...
    Je ne savais m�me pas que �a existait !
    Ca veut dire "aller se chercher une bi�re pendant les pubs, en attendant que le film recommence" ?

  14. #14
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    D�cembre 2010
    Messages
    1 009
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activit� : sans emploi

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 1 009
    Par d�faut
    Citation Envoy� par Bovino Voir le message
    Si, c'est possible via la collection cssRules.
    Ceci dit, c'est assez compliqu� � maitriser (donc tr�s peu utilis� et peu connu) et offre un int�r�t assez limit� compar� � getComputedStyle ou currentStyle.
    Je ne connaissais aucun des 3, comme quoi, j'en apprend encore tous les jours.


    Sinon effectivement, la boucle de LanfeustXIII avait du sens, et servait � remonter les �l�ments du DOM. (et non pas � v�rifier si l'objet avait du style ou encore moins � "attendre" qu'il en ait^^)

  15. #15
    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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    Sinon effectivement, la boucle de LanfeustXIII avait du sens, et servait � remonter les �l�ments du DOM. (et non pas � v�rifier si l'objet avait du style ou encore moins � "attendre" qu'il en ait^^)
    Donc il eut fallu faire la boucle sur le teste d'existence du parent et pas sur le style ...
    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 !

  16. #16
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 33
    Par d�faut
    Tu peux passer par du JQ peut-etre ?
    Peut �tre est ce une bonne id�e, je ne connaissais pas cette possibilit� il faut que j'essaie merci

    Sinon effectivement, la boucle de LanfeustXIII avait du sens, et servait � remonter les �l�ments du DOM.
    Voil� exactement

    Donc il eut fallu faire la boucle sur le teste d'existence du parent et pas sur le style ...
    Oui en effet la v�rification que j'effectue est sans doute ambigu� je l'admet.

    Ceci dit, c'est assez compliqu� � maitriser (donc tr�s peu utilis� et peu connu) et offre un int�r�t assez limit� compar� � getComputedStyle ou currentStyle.
    Voila la solution � mon probl�me : getComputedStyle
    Merci , �a marche tr�s bien pour r�cup�rer les donn�es css contenues dans une feuille de style

  17. #17
    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 659
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 75
    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 659
    Billets dans le blog
    1
    Par d�faut
    Voila la solution � mon probl�me : getComputedStyle
    Merci , �a marche tr�s bien pour r�cup�rer les donn�es css contenues dans une feuille de style
    Attention � la confusion !!
    getComputedStyle r�cup�re le style affich� !!
    Si il y a eu modification dynamique, le style dans la feuille de style peut �tre diff�rent !!
    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 !

  18. #18
    Membre averti
    Homme Profil pro
    �tudiant
    Inscrit en
    D�cembre 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comt�)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : D�cembre 2011
    Messages : 33
    Par d�faut
    Attention � la confusion !!
    getComputedStyle r�cup�re le style affich� !!
    Si il y a eu modification dynamique, le style dans la feuille de style peut �tre diff�rent !!
    Ah, je ne savais pas �a mais je ne pense pas que �a ait d'impact d�favorable dans mon cas, au contraire, sauf erreur

  19. #19
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Mea culpa (et trois ans plus tard ^^), je n'avais pas vu le p = p.parentNode;, du coup �a n'a rien � voir avec de l'attente active.

    Pour les curieux, l'attente active c'est justement bas� sur une boucle while, en gros on tourne dans le vide en attendant que la situation �volue. C'est souvent consid�r� comme maladroit car �a monopolise le processeur... http://fr.wikipedia.org/wiki/Attente_active
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

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

Discussions similaires

  1. R�ponses: 2
    Dernier message: 10/12/2007, 22h02
  2. Acc�s � java depuis javascript
    Par kodo dans le forum Autres
    R�ponses: 2
    Dernier message: 28/09/2006, 20h25
  3. Accès serveur WEB depuis l'internet
    Par Ultra-FX dans le forum R�seau
    R�ponses: 2
    Dernier message: 26/05/2005, 17h00
  4. [servlet] feuille de styme css et javascript
    Par bob33 dans le forum Servlets/JSP
    R�ponses: 9
    Dernier message: 24/03/2004, 08h08

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