11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde

Je vous fais ce petit post via un problème que j'ai pour trouver les styles appliqués à un élément HTML.

Si j'applique une classe à mon objet, ok pas de soucis, avec :
monObj1.className = monObj2.className


j'arrive sans problème à donner les styles de classes CSS de mon obj2 à mon obj1.

si j'ai :
<td style="border:1px solid #000000">...</td>


là de même pas de soucis pour récupérer la valeur du style appliqué avec :
alert(maTD.style.border)


Je récupère bien ce que j'ai mis dans ma balise.



Mon soucis c'est quand par exemple dans une feuille CSS je fais :
table td { 
   border: 1px solid #000000;
}

eh ben là plus moyen de savoir comment faire pour récupérer cette valeur du style qui est appliqué.

Si par exemple je fais le même bout de code que précédemment :
alert(maTD.style.border)


je me récupère alors du vide.

Quelqu'un saurait-il comment je peux faire pour retrouver à nouveau la valeur du style que j'ai appliqué ?

Merci d'avance
Smiley smile
re tout le monde

bon tout compte fait, ce bout de code bien qu'intéressant ne m'est pas plus utile tout compte fait.
J'ai vérifier les fichiers js de la librairie YUI que j'utilise, et ils utilisent une fonction similaire avec les computedStyle et les currentStyle.

En fait mon problème c'est :
par une quelconque action (un clicl, un début de drag, ...) je veut dupliquer les cellules d'un tableau pour en recréer un à l'identique.
Donc ce que je fais c'est que je récupère les cellules du tableau à dupliquer qui m'intéresse et je les clone grâce à la fonction clone.

Jusque là tout va bien. Le soucis apparaît lorsque je veux appliquer les styles des cellules d'origines au cellules clonnées. Je pourrais utiliser l'objet style pour les style inline, utiliser l'attribut de nom de classe pour mettre les même classes au cellules dupliquées.
Mais il n'en reste pas moins qu'il y a des styles qui ne sont pas conservés. Ceux qui par exemple sont appliqué grâce à


#montableau td {
   border: 1px solid #000000;
   font-size : 16px;
   ...
}


car cela ne correspond ni à un style inline, ni à une classe.

Donc ce que j'aimerais faire, c'est lancer une boucle sur tous les styles CSS possibles et inimaginables que l'on peut appliquer à un élément, faire un getStyle sur les cellules d'origines, et d'appliquer ces styles sur les cellules clonnées.

Mais là le pb, c'est que : c'est où que je peut trouvé une liste de tous les styles CSS ? il faut que je code tout en dur, ou y'a quelque chose qui peut me permettre de les récupérer ?

au final ce que je veut faire c'est :


for (labelCSSStyle in listCSSRule) {
          Dom.setStyle(maCelluleClonnée,labelCSSStyle,Dom.getStyle(macelluledorigine,labelCSSStyle));

}


en précisant que Dom.setStyle() et Dom.getStyle() sont des fonctions obtenues via l'API de la librairie YUI.
Donc sur ce bout de code, ce que je ne sais pas avoir, c'est listCSSRule.

Si quelqu'un a compris mon soucis (lol) et qu'il peut m'aider, je l'en remercie grandement d'avance. Smiley langue