JavaScript 第二个循环不会改变 CSS

标签 javascript css arrays

我正在使用 GreaseMonkey 为特定网站的某些元素重新着色。但是,当使用下面的循环时,只有第一个循环会进行任何更改。更改循环的顺序将只允许第一个循环生效。

var i;
var evenRows = document.getElementsByClassName("even");
for (i=0;i<=evenRows.length;i++) { evenRows[i].style.backgroundColor = '#555'; }

var oddRows = document.getElementsByClassName("odd");
for (i=0;i<=oddRows.length;i++) { oddRows[i].style.backgroundColor = '#333'; }

var theLinks = document.getElementsByTagName("a");    
for (i=0;i<=theLinks.length;i++)  { theLinks[i].style.color = '#aaa'; }

最佳答案

问题出在你的循环逻辑上,它会抛出一个 JS 错误。该数组是 0 索引的,但是 length属性为 1 索引。在你的循环中,你正在检查你的计数器是否小于或等于数组的长度,这意味着当 i 时循环仍将运行。等于 evenRows.length .您无法访问 evenRows[evenRows.length]因为它不存在。

更改 i <= evenRows.length;i < evenRows.length;这很好用。

JS fiddle :http://jsfiddle.net/grammar/vdwxua7s/1/

关于JavaScript 第二个循环不会改变 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25512784/

相关文章:

javascript - 如何使用 javascript 或 lodash 过滤嵌套数组

c# - 无法从对象数组转换为字符串数组

python - Numpy 在屏蔽后不会更改数组元素的值

css - 如果我为所有新元素选择 HTML 5,有什么优缺点?

javascript - 选择事件顺序,以便 onchange 事件在提交之前触发

javascript - ExtJS 4 - 如何使用菜单项上传文件

javascript - 如何让jquery动画函数并行运行?

html - 字体在类别和 Id 中

html - IE 中的翻转动画支持

javascript - jquery ajax post 中的 While 循环