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 :

this.style.color undefined en paramètre


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    développeur javascript et PHP en rech d'emploi
    Inscrit en
    Juillet 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur javascript et PHP en rech d'emploi

    Informations forums :
    Inscription : Juillet 2011
    Messages : 85
    Points : 38
    Points
    38
    Par défaut this.style.color undefined en paramètre
    dans mon fichier "dhtml - polices.htm", les 2 lignes suivantes ne se comportent pas pareil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	<li><a href="http://www.mmm.fr" onmouseover="alert(getRouge(document.monformulaire.txt1.style.color))" >www.mmm.fr</a></li><br>
    	<li><a href="http://www.mmm.fr" onmouseover="alert(getRouge(this.style.color))" >www.mmm.fr</a></li>
    Pourquoi en envoyant this à une fonction javascript, celle-ci peut lire la chaine this.style.color, alors qu'en envoyant en paramètre this.style.color, ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function getRouge(chaineRgb) {
    	var c=chaineRgb;
    	if ((c==undefined) || (c=="")) {c="rgb(couleur inconnue,couleur inconnue,couleur inconnue)";}
    	var p1=c.indexOf("(");
    	var p2=c.indexOf(",");
    	var rouge=c.substr(p1+1,p2-p1-1);
    	return rouge;
    }
    me renvoie "couleur inconnue".

  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 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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><a href="http://www.mmm.fr" onmouseover="alert(getRouge(this.style.color))" >www.mmm.fr</a></li>
    Dans ce cas la portée de this est la balise a
    Sans doute le style de cette balise n'est il pas défini ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><a href="http://www.mmm.fr" style="color:blue" onmouseover="alert(getRouge(this.style.color))" >www.mmm.fr</a></li>
    devrait afficher blue...

    essaye avec getComputedStyle() qui récupère le style généré

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    développeur javascript et PHP en rech d'emploi
    Inscrit en
    Juillet 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur javascript et PHP en rech d'emploi

    Informations forums :
    Inscription : Juillet 2011
    Messages : 85
    Points : 38
    Points
    38
    Par défaut style="color:red"
    j'obtiens comme chaine, au lieu du rgb(,,) attendu, la chaine "red".

    par contre, si je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    style="color:rgb(255,0,0)"
    j'obtiens bien ce que je cherche.
    C'est donc effectivement un défaut d'initialisation.

    Pour le reste, je cherche encore.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    développeur javascript et PHP en rech d'emploi
    Inscrit en
    Juillet 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur javascript et PHP en rech d'emploi

    Informations forums :
    Inscription : Juillet 2011
    Messages : 85
    Points : 38
    Points
    38
    Par défaut getComputedStyle : c'est pas la panacée !
    j'ai récupéré la fonction OffsetStyle sur :

    http://www.developpez.net/forums/d58...-actuel-objet/

    mais ça ne fonctionne pas bien sous chrome :

    sans définir les valeurs par css, j'obtiens semble-t-il les bonnes valeurs, mais le problème, c'est que si j'ajoute le code CSS, l'affichage du bouton est modifiée, mais ma fonction me renvoie toujours les mêmes valeurs:

    fontSize = '16px'
    padding = ''
    color = 'rgb(0, 0, 0)'
    font-weight = 'normal'
    text-decoration = 'none'

    mon programme OffsetStyle.htm:
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <script type="text/javascript" src="fonctions_mg.js"></script>
    <script language="JavaScript" type="text/javascript">
     
    function OffsetStyle(Obj,Prop){
    	var x = Obj;
    	if (x.currentStyle){
    		var y = x.currentStyle[Prop];
    	} else {
    		if (window.getComputedStyle){    
    			var y = window.getComputedStyle(x,null)[Prop];
    		}
    	}
    	return y;
    }
     
    function detaillePolice(objet) {
    	var t=new Array;
    	p_t=0
    	t[p_t++]="fontSize";
    	t[p_t++]="padding";
    	t[p_t++]="color";
    	t[p_t++]="font-weight";
    	t[p_t++]="text-decoration";
    	var msg="";
    	//var msg2="";
    	for (var i=0;i<p_t;i++) {
    		msg+=t[i]+" = '"+OffsetStyle(objet,t[i])+"'\n";
    		//msg2+=t[i]+" = '"+OffsetStyle(objet,t[i])+"'<br>";
    	}
    	return msg;
    	//document.write(msg2);
    }
    </script>
    <body>
    <!--style type="text/css">
    input {
    	text-decoration:none;
    	font-weight:bold;
    	color:#009;
    }
    </style-->
    <input type="button" onclick="alert(detaillePolice(document.body))" value='clique ici pour voir les détails de style' />
     
    </body>
     
    </html>

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    développeur javascript et PHP en rech d'emploi
    Inscrit en
    Juillet 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur javascript et PHP en rech d'emploi

    Informations forums :
    Inscription : Juillet 2011
    Messages : 85
    Points : 38
    Points
    38
    Par défaut j'ai donc pensé modifier le pramètre document.body
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" name="bouton1" onclick="alert(detaillePolice(document.bouton1))" value='clique ici pour voir les détails de style' />
    mais la encore, problème : cannot read property 'currentStyle' of undefined

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    développeur javascript et PHP en rech d'emploi
    Inscrit en
    Juillet 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : développeur javascript et PHP en rech d'emploi

    Informations forums :
    Inscription : Juillet 2011
    Messages : 85
    Points : 38
    Points
    38
    Par défaut milles excuses, j'avais oublié de préciser le nom du formulaire
    avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form name="form1">
    <input type="button" name="bouton1" onclick="alert(detaillePolice(document.form1.bouton1))" value='clique ici pour voir les détails de style' />
    </form>
    ça fonctionne nickel ! je mets donc le tag résolu.

  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

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

Discussions similaires

  1. [MooTools] [greasemonkey] this.getWindow() is undefined
    Par nuhuruine dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 18/03/2010, 13h02
  2. [Dojo] this.editNode is undefined
    Par Zineb1987_UNI dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 25/01/2010, 16h55
  3. Réponses: 2
    Dernier message: 16/10/2009, 13h08
  4. this.style.border
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/03/2008, 09h37
  5. this.form retourne undefined avec <a>
    Par Tchupacabra dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 11/03/2007, 09h51

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