我有一个包含 30 div
的节点列表s,我需要包括 1 div
每 4 div
但var 'c'
不改变并堆叠所有div
位于 position[6]
.
for (i = 0; i < 8; i++) {
var pub = "pub-retangulo-";
var c = 2;
c += 4;
var o = document.createElement("div");
o.setAttribute("id", pub.concat(i.toString()));
o.setAttribute("align", "center");
var container = document.querySelectorAll(".short-summary")[c];
container.parentNode.insertBefore(o, container);
}
最佳答案
您在每次迭代时重新声明您的 c
变量。这就是为什么它停留在 6。您需要将此分配移到循环之外
var pub = "pub-retangulo-";
var c = 2;
for (i = 0; i < 8; i++) {
var o = document.createElement("div");
o.setAttribute("id", pub.concat(i.toString()));
o.setAttribute("align", "center");
var container = document.querySelectorAll(".short-summary")[c];
container.parentNode.insertBefore(o, container);
c += 4;
}
我还将您的 c+=4
移至循环末尾,这将导致循环第一次在 c = 2
处执行,而不是 c = 6
如Barmar也就是说,在这种情况下您可能根本不需要变量。您每次都会增加四,因此您可以将 c
变量替换为 2(初始值)+ i(当前迭代索引)* 4(增量比率)
。
P.S.此代码未经测试,请不要只是复制并粘贴它,期望一切都能完美运行。尝试理解它并将其应用到您自己的上下文中。
关于javascript - 节点列表中 for 的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59955158/