1

CSSクラスの背景色を変更するためのこの関数があります。

function changeBackgroundColor(className, value){
    var ss = document.styleSheets;
    for (var i=0; i<ss.length; i++) {
        var ss = document.styleSheets;
        var rules = ss[i].cssRules || ss[i].rules;
        for (var j=0; j<rules.length; j++) {
            if (rules[j].selectorText === className) {
                rules[j].style.backgroundColor = value;
            }
        }
    }
}

そしてこれでそれを呼んで、

changeBackgroundColor(".menuActive", "#fff");

IE9では完全に機能していますが、ChromeとFirefoxでテストすると、機能しないようです。ChromeとFirefoxはクラスなどを見つけられないようです。私はjavascriptに少し慣れていないので、これを解決したり、何らかの方法で私を導いていただければ幸いです。

4

2 に答える 2

2

を使用する代わりに、別のアプローチをお勧めしdocument.styleSheetsます。

function changeBackgroundColor(className, value){
    var elements;
    if (typeof document.getElementsByClassName === 'function') {
        // modern browsers
        elements = document.getElementsByClassName(className);
    } else {
        // other browsers (IE)
        elements = document.querySelectorAll('.' + className);
    }

    for (var i = 0; i < elements.length; i++) {
        elements[i].style.backgroundColor = value;
    }
}

また、より一般的な関数から一歩離れています。

function changeStyle(className, styleName, value){
    var elements;
    if (typeof document.getElementsByClassName === 'function') {
        // modern browsers
        elements = document.getElementsByClassName(className);
    } else {
        // other browsers (IE)
        elements = document.querySelectorAll('.' + className);
    }

    for (var i = 0; i < elements.length; i++) {
        elements[i].style[styleName] = value;
    }
}
于 2012-08-02T14:03:34.747 に答える
0

Internet Explorer でサポートされているルール インターフェイスは、他のブラウザーでサポートされているものと同じではありません。たとえば、ルール オブジェクトの「selectorText」プロパティはありません。

CSSRuleオブジェクトの Mozilla ドキュメントは次のとおりです。

于 2012-08-02T14:03:04.973 に答える