this.style.color undefined en paramètre
dans mon fichier "dhtml - polices.htm", les 2 lignes suivantes ne se comportent pas pareil :
Code:
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:
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".
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:
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> |
j'ai donc pensé modifier le pramètre document.body
Code:
<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
milles excuses, j'avais oublié de préciser le nom du formulaire
avec :
Code:
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.