为什么我不能迭代getElementsByTagName返回的所有元素?

时间:2012-07-20 15:45:16

标签: javascript dom

我正在尝试用另一个标签替换一组标签,但由于某种原因,我似乎无法遍历getElementsByTagName()返回的所有标签。

In the example第一行中的第二个td由于某种原因被跳过,即使它出现在console.log(tds)中。

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:5)

将第一行更改为:

var tds = [].slice.call(document.getElementsByTagName('td'), 0);

.getElementsByTagName()返回的值是NodeList,而不是数组。 NodeList对象是“实时”的,这意味着它们会在您更改DOM时发生更改。也就是说,tds.length正在递减,但你的i也在递增 - 因此你每次迭代都缺少一个元素。如果你首先将它变成一个数组,如上所述,那么你的代码应该可以工作。