Как узнать номер правила, с которого произошло сокращение в слое?

Кросс-браузерное решение для проверки значений CSS без манипуляции с DOM:

function getStyleRuleValue(style, selector) {
    for (var i = 0; i < document.styleSheets.length; i++) {
        var mysheet = document.styleSheets[i];
        var myrules = mysheet.cssRules ? mysheet.cssRules : mysheet.rules;
        for (var j = 0; j < myrules.length; j++) {
            if (myrules[j].selectorText && myrules[j].selectorText.toLowerCase() === selector) {
                return myrules[j].style[style];
            }
        }

    }
};

Использование:

getStyleRuleValue('backgroundColor', '.chart-color')

дезинфицированная версия (принудительно вводит ввод в строчный регистр и позволяет использовать case без ведущего ".")

function getStyleRuleValue(style, selector) {
var selector_compare=selector.toLowerCase();
var selector_compare2= selector_compare.substr(0,1)==='.' ?  selector_compare.substr(1) : '.'+selector_compare;

for (var i = 0; i < document.styleSheets.length; i++) {
    var mysheet = document.styleSheets[i];
    var myrules = mysheet.cssRules ? mysheet.cssRules : mysheet.rules;
    for (var j = 0; j < myrules.length; j++) {
        if (myrules[j].selectorText) {
            var check = myrules[j].selectorText.toLowerCase();
            switch (check) {
                case selector_compare  :
                case selector_compare2 : return myrules[j].style[style];
            }
        }
    }

}

}

0
задан Akash Kumar Singh 11 March 2019 в 12:37
поделиться