我试图为 distinctCtyNames
中的每个元素添加一个 div大批。但是,如果我按一次按钮,它只会创建几个 div,我必须多次按按钮才能弹出所有元素并使它们成为 div。
当我使用for(i=0;i<length;i++){ctyName = distinctCtyNames[i] /*and create div*/}
时,不存在这个问题
我的代码如下:
<input type="submit" name="BtnLogin" value="addDiv" onclick="addDiv()" id="addDiv" style="height:26px;width:100px;Z-INDEX: 105; LEFT: 440px; TOP: 72px"/>
和
console.log(distinctCtyNames);
for (ctyName in distinctCtyNames){
var element = document.createElement('div');
ctyName = distinctCtyNames.pop();
element.id = ctyName;
element.style['cssText'] = "width: 1000px; height: 400px; margin: 0px auto;"
oContent.appendChild(element);
}
最佳答案
您可以使用 array.pop
方法在 for 循环内重新分配 ctyName
变量。
当您从头开始迭代时,pop
将删除数组中的最后一个元素,当您删除最后一个元素时,数组将发生变化,因此不会迭代整个数组。
当您运行循环时,将为 distinctCtyNames
数组中的每个实例设置 ctyName
var。
for (ctyName in distinctCtyNames) { ...
可以写成:
for(var i=0,len=distinctCtyNames.length;i<len;i++) {
var ctyName = distinctCtyNames[i];
停止在循环中使用 pop
方法,它应该可以正常工作。
关于javascript for 循环不会迭代所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31311532/