【发布时间】:2015-12-23 10:45:10
【问题描述】:
当我加载我的页面时,会创建一个 nodeList,它看起来像这样:
[text, h4, text, span, br, input, br, span, br, input, br, span, br, input, br, span, br, input, br]
我创建了一个简单的for 循环,循环遍历所有这些元素并从 DOM 中删除它们中的每一个。 (所有元素都在<section>中)
这是循环:
for(element in videoTitlesElement.childNodes){
if(!isNaN(element)){
videoTitlesElement.removeChild(
videoTitlesElement.childNodes[element]);
}
}
但是,在循环结束时,nodeList 看起来像这样:
[h4, span, input, span, input, span, input, span, input]
并非所有元素都被删除。为什么?
谢谢。
【问题讨论】:
-
因为您在循环遍历集合时正在修改集合。假设您在集合
[A, B, C]中有三个元素。for..in循环内部将有一个索引器来跟踪当前元素。所以索引器在开始时是 0,它指向元素A。然后删除第一个元素,第二个元素B现在成为第一个元素。索引器现在高级并指向 1。现在索引 1 处的元素C已被删除。正如您可能看到的那样,索引 0 处的元素B未被触及并被跳过。
标签: javascript for-loop for-in-loop nodelist