11549 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
après beaucoup de recherche et de temps, je n'ai trouvé aucune solution.
Donc vous êtes ma dernière chance ^^.
Mon problème et le suivant, j'aimerais créer un petit éditeur css en javascript.
Mais il me faut imperativement récupèrer les régles des feuilles de style accroché a chaques élements, ainsi que les éventuelles régles de l'attribut style.
Apres avoir exploré les pistes suivantes :
Avec jquery :

$(Mon element).css("la regles");

$(Mon element).context.style;


Ou encore récupérer directement les régles de l'élements :
document.styleSheets[0].cssRules[0];


Donc j'aimerais savoir comment récuperer tous les styles applicables à l'élement sans avoir une dizaine de boucle imbriquée.

Merci de vos reponses et excusez moi pour les fautes d'orthographe Smiley confused .
Modifié par gtko (02 Mar 2012 - 15:43)
connecté
Administrateur
Bonjour et bienvenue, Smiley smile

merci d'éditer ton titre pour quelque chose qui ait un rapport avec ton problème. "Comment faire ?" pourrait être le titre de 30% des sujets de ce Forum (60% pour "J'ai un problème" dont la moitié avec "IE" en plus). Smiley cligne

http://glazman.org/JSCSSP/ n'est pas la réponse à ta question mais je pense que ça peut t'intéresser quand même.
Bon , un début de réponse ^^ avec une boucle à 3 niveaux Pas cool ^^.

explications :
- parcours les styleSheet du document
- récupérer les selecteurs des régles
- grace a la fonction $.is() de jquery je verifie si le selecteur est valide.

Code js :

      
                     var styleSheet = document.styleSheets;
                      for(var i=0;i<styleSheet.length;i++){
                        var rules =   styleSheet[i].cssRules
                         if(rules != undefined)
                         {
                            for(var y=0;y<rules.length;y++)
                            {
                                    $.each($("#content *") , function(index , ele){

                                        if($(ele).is(rules[y].selectorText))
                                        {
                                            console.log(rules[y].cssText);
                                        }

                                    });

                            }
                         }
}


Si quelqu'un a une idée moins gourmande Smiley biggrin ???[/i]