Javascript 忽略for循环中的If语句

Javascript 忽略for循环中的If语句,javascript,Javascript,我有一个for循环,其中嵌套了一个if语句,但是循环忽略了该语句并继续运行。你知道为什么会这样吗?非常感谢 JavaScript: var sheet = document.styleSheets[0]; var cssVal = ''; function changeColor() { for (i = 0; i < sheet.cssRules.length; i++) { cssVal = sheet.cssRules[i]; consol

我有一个for循环,其中嵌套了一个if语句,但是循环忽略了该语句并继续运行。你知道为什么会这样吗?非常感谢

JavaScript:

var sheet = document.styleSheets[0];
var cssVal = '';

function changeColor() { 
    for (i = 0; i < sheet.cssRules.length; i++) {
        cssVal = sheet.cssRules[i];
        console.log(cssVal); // Successfully outputs #box to the console.
            if (cssVal == "#box") { // Does nothing, continues iterating.
                console.log("If has run.");
                cssVal.style.backgroundColor="blue";
                break;
            }
    }
}

changeColor();
HTML:


很明显,如果
它不会进入
的内部,这是因为
cssVal
不是
字符串,而是
CSSStyleRule
对象。您应该这样做:

cssVal = sheet.cssRules[i];
然后在您的
中,如果

if (cssVal.selectorText == '#box')
然后,要更改颜色:

cssVal.style.backgroundColor = "blue"; 

尝试进行严格的比较,比如检查字符串中的前导空格或尾随空格,可能是
console.log(“|”+cssVal+“|”)你的函数应该真正声明“i”为局部变量。我会附加一个调试器并深入研究
cssVal
是什么。它是物体吗?它还有其他属性吗?如果是一根绳子,长度是多少?每个角色都有什么?调试器非常适合挖掘这些东西。谢谢你的帮助。这教会了我很多。我想我误解了“松散类型”的含义。
if (cssVal.selectorText == '#box')
cssVal.style.backgroundColor = "blue";