Anyone please... This is really making me mad and I have no clue on
how to fix this stupid bug that shouldn't be happening.

If anyone as any idea, please, let me now... :(

Nazgulled wrote:
> Hi there,
> I'm having this strange problem with IE that I don't know how to fix.
> Tried countless things, but neither worked and I just can't understand
> why this is happening, it makes no sense to me.
>
> First things first... To assign a color to some element border I do
> the following which works fine:
> $('id#element').css('borderColor', '#ff0000');
>
> Now let's say I have a variable with that string, something like this
> that also works fine:
> var color = '#ff0000';
> $('id#element').css('borderColor', color);
>
> Now the real problem. On my original code, I have something like the
> above example, the only difference is that the "color" variable is not
> manually assigned like in the example. I have a function that grabs
> some colors from an external stylesheet, puts them into an array and
> returns the array.
>
> That function is called getColorsFromCSS and the code is the
> following:
> getColorsFromCSS: function(cssElement) {
>       var cssRules, cssSelector;
>       var colors = [];
>
>       // Which CSS rules are available in the browser?
>       if (document.styleSheets[0].cssRules) {
>               cssRules = document.styleSheets[0].cssRules;
>       } else {
>               cssRules = document.styleSheets[0].rules;
>       }
>
>       // Double check if the CSS rules are really available
>       if (cssRules) {
>               // Loops through each CSS selector
>               for (var i = 0; i < cssRules.length; i++) {
>                       cssSelector = cssRules[i].selectorText.toLowerCase();
>
>                       // Get colors from which CSS elements?
>                       if (cssElement == 'links') {
>                               // Gets the color value for a specific selector
>                               switch (cssSelector.replace(/,.+/i, "")) {
>                                       case "ul#cp-block-items a:link":
>                                               colors[0] = 
> cssRules[i].style.color;
>                                               break;
>                                       case "ul#cp-block-items a:hover":
>                                               colors[1] = 
> cssRules[i].style.color;
>                                               break;
>                                       case "div#content a:link":
>                                               colors[2] = 
> cssRules[i].style.color;
>                                               break;
>                                       case "div#content a:hover":
>                                               colors[3] = 
> cssRules[i].style.color;
>                                               break;
>                               }
>
>                               //
>                               if(colors.length == 4) return colors;
>                       } else if (cssElement.indexOf('popup') == 0) {
>                               // Gets the color value for a specific selector
>                               switch (cssSelector.replace(/,.+/i, "")) {
>                                       case "div#" + cssElement:
>                                               colors[0] = 
> cssRules[i].style.color;
>                                               colors[1] = 
> cssRules[i].style.backgroundColor;
>                                               break;
>                               }
>
>                               //
>                               if(colors.length == 2) return colors;
>                       }
>               }
>       }
> },
>
> Yes, the function is working, meaning the values are retrieved from
> the external CSS and the array is returned with all the values inside
> it. I conformed this by doing an alert(popupColors[0]); before trying
> to set the border color and the output was a string with the color
> value (like the code below).
>
> And my real code goes like this:
> var popupColors = $.admin.getColorsFromCSS('popup-notice-error');
> alert(popupColors[0]); // This outputs the color value assigned to
> this array index
> $('div#popup-block').css('borderColor', popupColors[0]); // But this
> doesn't work :(
>
> This is only happening in IE6/7, not on Firefox 2.0.0.12, Opera 9.26
> and Safari 3.1 (Win).
>
> Any thoughts on this?

Reply via email to