A little OT.  Hope you don't mind...  here is a function which modifies a
value in an external stylesheet (works in Firefox, IE 6, IE 5.5)...

I've rewritten it using prototype.js structures and suspect there are some
additional optimizations which could be made.  There may be a way to use
findAll or another equivalency operator to test for the innermost equality
and perform the assignment if it's true?

Comments appreciated...

Sam

        cssSelectorUpdate2:        function(sSelector, sProperty, sValue) {
// Update the property value for a specific sSelector in a stylesheet
            for(var i = 0; document.styleSheets.length > i; i++) { //
Mozilla
                var oRules = document.styleSheets[i].rules ||
document.styleSheets[i].cssRules;
                for(var j = 0; oRules.length > j; j++)  {
                    var sSelectors = oRules[j].selectorText;
// string of all selectors on this line
                    var aSelectors = sSelectors.split(',');
// separate all selectors
                    for(var k=0; k<aSelectors.length; k++) {
                        if(aSelectors[k] == sSelector) {
                            oRules[j].style[sProperty] = sValue;
                        }
                    }
                }
            }
        },
        
        cssSelectorUpdate:        function(sSelector, sProperty, sValue) {
// Update the property value for a specific sSelector in a stylesheet
            $A(document.styleSheets).each(function(oStyleSheet) {
               $A(oStyleSheet.rules ||
oStyleSheet.cssRules).each(function(oRule) {
 
oRule.selectorText.split(',').each(function(sSheetSelector) {
                         if(sSheetSelector == sSelector)
oRule.style[sProperty] = sValue;
                     });
                });
           });
        },

Sample usage:  

  cssSelectorUpdate( ".myclass", 'color', '#ff0000'); // .myclass is a
selector in one of my stylesheets...

... Updating the stylesheet rather than the DOM has a virtue:  When dynamic
Ajax content is loaded, the revised external stylesheet rules automatically
apply.  It seems to simplify the application I have in development.




_______________________________________________
Rails-spinoffs mailing list
Rails-spinoffs@lists.rubyonrails.org
http://lists.rubyonrails.org/mailman/listinfo/rails-spinoffs

Reply via email to