Javascript内循环在第一次出现时停止外循环

时间:2014-06-18 07:13:34

标签: javascript

我已经嵌套了两个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";
         }

      }
 }

有什么想法吗?

2 个答案:

答案 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