1

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

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

我的代码有什么问题?

4

1 回答 1

6

将第一行更改为:

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

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

于 2012-07-20T15:48:05.110 回答