【发布时间】:2016-10-13 21:36:45
【问题描述】:
所以我的目标是在 Javascript 中创建一个在页面上随机放置一些 div 的函数。最终,我想用图片填充这些 div,这样它就产生了图片被随机扔在桌子上的想法。我想出了一个 for 循环,现在它可以工作了,但我不明白为什么它以前不能工作。
var wrapper = document.getElementById("wrapper");
var xvalue;
var yvalue;
for (var i = 0; i < 3; i++) {
var newDiv = document.createElement("div");
xvalue = Math.floor(Math.random() * 400);
yvalue = Math.floor(Math.random() * 400);
newDiv.setAttribute("class", "frame");
newDiv.style.top = yvalue+"px";
newDiv.style.left = xvalue+"px";
wrapper.appendChild(newDiv);
}
之前,我已经移动了这条线:
var newDiv = document.createElement("div");
在实际的 for 循环之前。由于它只用于创建一个新的 div,我想我不妨在循环之外声明变量。然而,这样做会导致它在同一个位置重复生成相同的div 三 次。通常我理解为什么将一个固定变量放在 for 循环之外会产生相同的结果,但在这里我不明白为什么。
提前致谢!
大安
【问题讨论】:
-
你不明白为什么只创建一个div就只创建一个div?
-
但它是一个for循环不是吗?当我告诉它创建一个新的 div [i] 次时,它不应该生成这么多次吗?此外,这并没有回答我的问题,这就是为什么将 createElement 放在循环中会如此彻底地改变结果
-
因为您为所有迭代创建了一个 div。因此,当它在循环之外时,您每次都在操作相同的 div。
-
如果将创建元素的代码放在循环之外,那么循环显然不会影响创建多少元素。
-
这是一个关于范围和 javascript 编译阶段的精彩视频。 youtube.com/watch?v=nRZri_CHqnA
标签: javascript for-loop