我似乎无法在任何地方找到这个问题的答案...... 我有一个函数需要设置两个表的背景颜色。只有函数中的第一个表受到影响。一个函数中只允许有一个for循环吗? ...或者第一个 for 循环可能永远不会退出?
我几乎可以通过创建多个函数来解决这个问题,但我真的很想理解为什么它会这样!
谢谢!
这是我的简化代码:
function setColor()
{
//This works
var t1rows=document.getElementById("table1").getElementsByTagName("tr");
var x;
for (x in t1rows)
{
t1rows[x].style.backgroundColor='yellow';
}
//this one does not work
var t2rows=document.getElementById("table2").getElementsByTagName("tr");
var y;
for (y in t2rows)
{
t2rows[y].style.backgroundColor='yellow';
}
}
最佳答案
getElementsByTagName()
returns a NodeList
object ,并且 for-in
将迭代您不想要的属性。您想使用直接的 for
循环:
for(var i=0; i < t2rows.length; i++) {
t2rows[i].style.backgroundColor='yellow';
}
您无法进入第二个循环,因为第一个循环在尝试访问 NodeList
成员之一上不存在的 style
属性时失败.
关于JavaScript 函数 : nothing executes after a for(x in y) loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/546907/