繁体   English   中英

Javascript函数:for(x in y)循环后什么都不执行?

[英]Javascript function: nothing executes after a for(x in y) loop?

我似乎在任何地方都找不到答案……我有一个需要设置两个表的bg颜色的函数。 仅该函数中的第一个表受到影响。 函数中仅允许一个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()返回一个NodeList对象for-in将迭代其不需要的属性。 您要使用直接for循环:

for(var i=0; i < t2rows.length; i++) {
    t2rows[i].style.backgroundColor='yellow';
}

您不会进入第二个循环,因为第一个循环在尝试访问NodeList成员之一上不存在的style属性时失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM