Javascript 忽略for循环中的If语句
我有一个for循环,其中嵌套了一个if语句,但是循环忽略了该语句并继续运行。你知道为什么会这样吗?非常感谢 JavaScript: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
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";