创建对象并将其附加到动态创建的对象

时间:2015-02-17 02:47:37

标签: javascript html createelement

我一直在Google上搜索一段时间,似乎无法找到我这个问题的答案。我对js也有点新鲜,所以可能有一种更简单的方法或者我想念的东西。这就是我正在做的事情:

我想创建9个div,然后将9个div分别放入原来的9个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个div的9个分组,这些分组在类名“square”下标记,每个分组中的div用类名“pixel”标记,但事实并非如此。只创建了一个“bigSquare”div(包含9个“像素”div)而不是我想要的9个。我觉得好像每个新的“bigSquare”div的创建只是用循环的每次迭代替换前一个,但我不确定。就是这样,我不知道如何解决它...任何帮助?我试图描述这个的方式可能很混乱:/

3 个答案:

答案 0 :(得分:1)

问题是您为外循环和内循环重用了循环迭代变量i。将其中一个更改为j或其他内容,您的代码应该有效。

答案 1 :(得分:1)

您需要为每个循环声明和更改变量,否则初始变量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);
        }
    }
}

答案 2 :(得分:0)

糟糕。你正在重复使用&#34;我&#34;里面和&#34;我&#34;环。切换变量!

&#13;
&#13;
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);
             }
       }
}
&#13;
&#13;
&#13;