创建对象并将它们附加到动态创建的对象
Creating Objects and Appending Them to Dynamically Created Objects
我已经在 Google 周围搜索了一段时间,似乎找不到我这个问题的答案。我对 js 也有些陌生,所以可能有更简单的方法或明显缺少的东西。这是我正在做的事情:
我想创建九个 div,然后将九个 div 放入原来的九个中。我有以下功能:
function createDivs() {
for(i = 0; i < 9; ++i) {
var bigSquare = document.createElement("div");
document.body.appendChild(bigSquare);
bigSquare.className = "square";
for(i = 0; i < 9; ++i) {
var smallSquare = document.createElement("div");
smallSquare.className = "pixel";
bigSquare.appendChild(smallSquare);
}
}
}
我认为这会创建 9 个分组,每组 9 个 div,这些分组被标记为 class 名称 "square",每个分组中的 div 被标记为标有 class 名称 "pixel",但事实并非如此。只创建了一个 "bigSquare" div(包含九个 "pixel" div),而不是我想要的九个。我觉得好像每个新的 "bigSquare" div 的创建只是用循环的每次迭代替换前一个,但我不确定。就是这样,我不确定如何解决它……有什么帮助吗?我试图描述这一点的方式可能非常令人困惑:/
问题是您为外循环和内循环重新使用了循环迭代变量 i
。将其中之一更改为 j
或其他内容,您的代码应该可以工作。
您需要在每个循环中声明和更改您的变量,否则初始变量 i
只会在您进入内部循环时更改。像这样做:
function createDivs() {
for (var i = 0; i < 9; i++) {
var bigSquare = document.createElement("div");
document.body.appendChild(bigSquare);
bigSquare.className = "square";
for (var k = 0; k < 9; k++) {
var smallSquare = document.createElement("div");
smallSquare.className = "pixel";
bigSquare.appendChild(smallSquare);
}
}
}
哎呀。您正在重用 "i" 内部和 "i" 循环。切换变量!
function createDivs() {
for(var i = 0; i < 9; ++i) {
var bigSquare = document.createElement("div");
document.body.appendChild(bigSquare);
bigSquare.className = "square";
for(var j = 0; j < 9; ++j) {
var smallSquare = document.createElement("div");
smallSquare.className = "pixel";
bigSquare.appendChild(smallSquare);
}
}
}
我已经在 Google 周围搜索了一段时间,似乎找不到我这个问题的答案。我对 js 也有些陌生,所以可能有更简单的方法或明显缺少的东西。这是我正在做的事情:
我想创建九个 div,然后将九个 div 放入原来的九个中。我有以下功能:
function createDivs() {
for(i = 0; i < 9; ++i) {
var bigSquare = document.createElement("div");
document.body.appendChild(bigSquare);
bigSquare.className = "square";
for(i = 0; i < 9; ++i) {
var smallSquare = document.createElement("div");
smallSquare.className = "pixel";
bigSquare.appendChild(smallSquare);
}
}
}
我认为这会创建 9 个分组,每组 9 个 div,这些分组被标记为 class 名称 "square",每个分组中的 div 被标记为标有 class 名称 "pixel",但事实并非如此。只创建了一个 "bigSquare" div(包含九个 "pixel" div),而不是我想要的九个。我觉得好像每个新的 "bigSquare" div 的创建只是用循环的每次迭代替换前一个,但我不确定。就是这样,我不确定如何解决它……有什么帮助吗?我试图描述这一点的方式可能非常令人困惑:/
问题是您为外循环和内循环重新使用了循环迭代变量 i
。将其中之一更改为 j
或其他内容,您的代码应该可以工作。
您需要在每个循环中声明和更改您的变量,否则初始变量 i
只会在您进入内部循环时更改。像这样做:
function createDivs() {
for (var i = 0; i < 9; i++) {
var bigSquare = document.createElement("div");
document.body.appendChild(bigSquare);
bigSquare.className = "square";
for (var k = 0; k < 9; k++) {
var smallSquare = document.createElement("div");
smallSquare.className = "pixel";
bigSquare.appendChild(smallSquare);
}
}
}
哎呀。您正在重用 "i" 内部和 "i" 循环。切换变量!
function createDivs() {
for(var i = 0; i < 9; ++i) {
var bigSquare = document.createElement("div");
document.body.appendChild(bigSquare);
bigSquare.className = "square";
for(var j = 0; j < 9; ++j) {
var smallSquare = document.createElement("div");
smallSquare.className = "pixel";
bigSquare.appendChild(smallSquare);
}
}
}