javascript - 节点列表中 for 的意外行为

标签 javascript for-loop nodelist

我有一个包含 30 div 的节点列表s,我需要包括 1 div每 4 divvar '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/

相关文章:

javascript - Express 抛出所有 undefined variable

python - 读取并打印字符串 x 次

javascript - 使用元素的nodeList "childNodes"。为什么没有删除container2?

javascript - JavaScript 闭包中的激活对象

Javascript 临时死区 NodeJS 7.9.0 性能下降?

Javascript数组插入for循环

java - 重复一个整数n次

javascript - 聚焦 NodeList 元素

javascript - 在单击事件上更改元素节点列表的样式

javascript - 计算两个日期之间的差异