JavaScript 函数 : nothing executes after a for(x in y) loop?

标签 javascript

我似乎无法在任何地方找到这个问题的答案...... 我有一个函数需要设置两个表的背景颜色。只有函数中的第一个表受到影响。一个函数中只允许有一个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/

相关文章:

javascript - 有什么方法可以在 Android 中与 WebView 进行通信?

javascript - JQuery 单元测试工具提示(jasmine、qunit 等)

JavaScript:RegExp 构造函数与 RegEx 文字

javascript - 试图弄清楚如何使用隐藏在父元素中的 jQuery index()

javascript - 内部 $.getJSON 不会转到循环中的第二个元素

javascript - $http请求中的Angular JS默认预定义数据

javascript - webpack 无法解析 node_modules Material 图标

javascript - 使用电子邮件外部链接(gmail、outlook)触发网站内的事件

Javascript OnclickOff

javascript - HTML 拖放 - 如何设置 *outgoing* 拖拽(到桌面)的文件名