【发布时间】:2012-11-04 16:37:18
【问题描述】:
我有一个非常奇怪的问题,我有一个 forloop,它应该将所有具有“原始”类的 div 替换为具有“新”类的文本输入。当我运行循环时,它只用输入替换所有其他 div,但如果我运行循环只是替换 div 的类而不将标签更改为输入,它会执行每个 div,并且不仅互相做。
这是我的循环代码,以及实时版本的链接:live version here
function divChange() {
var divs = document.getElementsByTagName("div");
for (var i=0; i<divs.length; i++) {
if (divs[i].className == 'original') {
var textInput = document.createElement('input');
textInput.className = 'new';
textInput.type = 'text';
textInput.value = divs[i].innerHTML;
var parent = divs[i].parentNode;
parent.replaceChild(textInput, divs[i]);
}
}
}
【问题讨论】:
-
反向迭代而不是正向迭代。当您删除
div时,它也会从divs集合中删除,因此您最终会跳过索引。 -
啊,所以有 var i = divs.length; i>0;我——?
-
是的,差不多。
var i = divs.length - 1; i > -1; i-- -
啊,太棒了。太糟糕了,您没有将此作为答案发布。大声笑
-
@user1689607 或
for ( var i = divs.length - 1; i--; )...
标签: javascript for-loop parent-child