我已经嵌套了两个for循环,如下所示。但内循环在第一次出现时停止外循环。执行时,下面的代码只给出了我的第13行灰色,其中预期的行为是看到灰色的第13行,第14行和第15行。
var rows = document.getElementsByTagName("tr");
for(var i = 0, max = rows.length;i < max; i++)
{
var cells = rows[i].getElementsByTagName("td");
if (rows[i].cells[4].innerHTML == "Asset Removed")
{
for(var inner = 0, max = rows[inner].cells.length;inner < max; inner++)
{
cells[inner].style.backgroundColor = "grey";
}
}
}
有什么想法吗?
答案 0 :(得分:2)
for(var i = 0, max = rows.length;i < max; i++)
for(var inner = 0, max = rows[inner].cells.length;inner < max; inner++)
内循环中的max
变量与外循环中的i < max
变量相同,因此会覆盖其值,从而导致{{1}}结束条件变得不可靠。
答案 1 :(得分:2)
您在内部和外部循环中使用相同的变量。 in javascript last assigned value is taken by variable as final value
所以更改inner loop max variable to some another name
。试试这个。
var rows = document.getElementsByTagName("tr");
for(var i = 0, max = rows.length;i < max; i++)
{
var cells = rows[i].getElementsByTagName("td");
if (rows[i].cells[4].innerHTML == "Asset Removed")
{
for(var inner = 0, max1 = rows[inner].cells.length;inner < max1; inner++)
{
cells[inner].style.backgroundColor = "grey";
}
}
}
我已将内循环max
变量更改为max1