节点列表中 for 的意外行为
Unexpected behaviour with for in a nodelist
我有一个包含 30 div
s 的节点列表,我需要每 4 div
s 包括 1 div
,但是 var 'c'
不会改变并堆叠所有div
s 在 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
正如所说,在这种情况下您可能根本不需要变量。您每次递增 4,因此您可以将 c
变量替换为 2 (initial value) + i(current iteration index) * 4 (increment ratio)
。
P.S. 此代码 未经测试,请不要只是复制粘贴它并期望一切正常.尝试理解它并将其应用到您自己的上下文中。
我有一个包含 30 div
s 的节点列表,我需要每 4 div
s 包括 1 div
,但是 var 'c'
不会改变并堆叠所有div
s 在 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
正如c
变量替换为 2 (initial value) + i(current iteration index) * 4 (increment ratio)
。
P.S. 此代码 未经测试,请不要只是复制粘贴它并期望一切正常.尝试理解它并将其应用到您自己的上下文中。