Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript DOM节点递归_Javascript_Dom - Fatal编程技术网

Javascript DOM节点递归

Javascript DOM节点递归,javascript,dom,Javascript,Dom,我有一个基本的递归函数,但我想在当前父节点上附加x个子节点。。但是递归函数中的for循环似乎不会向其当前父节点追加超过1个子节点。下面是我的代码的js文件:非常感谢您的帮助 函数填充(父,n){ //循环和附加 如果(n==0){ 返回; }否则{ n--; var child=boxHelper(“40%”,即“40%”); for(var i=0;i如果您的for循环,您不会创建4个新的子项。您只是创建一个并尝试将其附加到父项中 一个节点只能位于DOM中的一个位置。您的代码创建一个节点,然后

我有一个基本的递归函数,但我想在当前父节点上附加x个子节点。。但是递归函数中的for循环似乎不会向其当前父节点追加超过1个子节点。下面是我的代码的js文件:非常感谢您的帮助

函数填充(父,n){
//循环和附加
如果(n==0){
返回;
}否则{
n--;
var child=boxHelper(“40%”,即“40%”);

for(var i=0;i如果您的
for
循环,您不会创建4个新的子项。您只是创建一个并尝试将其附加到
父项中


一个节点只能位于DOM中的一个位置。您的代码创建一个节点,然后尝试将其附加到多个不同的位置。该节点将位于最后一个位置


将调用移动到该
boxHelper()
函数在
for
循环中。

-至少,阅读顶部的两段gahhh..我怎么会错过这个。thx这么多..它正在做我期望的事情。嗯,现在有另一个问题..子节点只是附加到最后一个父节点,而不是全部..有什么建议吗?我认为这是我需要在递归中进行的调整功能
function populate(parent, n){
    // loop and append
    if(n === 0){
        return;
    }else{
        n--;
        var child = boxHelper("40%", "40%");
        for(var i = 0; i <= 4; i++){
            console.log(i);
            parent.appendChild(child);

        }
        populate(child, n);
    }
}

var mother = boxHelper("600px", "600px");
document.body.appendChild(mother);
populate(mother, 4);



// makeNodeRefs(callender);


function boxHelper(height, width){
    var element = document.createElement("div");
    element.style.height = height;
    element.style.width = width;
    //element.style.background = colour;
    element.style.float = "left";
    element.style.margin = "5px";
    element.style.border = "2px solid black";
    element.style.borderRadius = "3px";
    // element.classList.add("inflate");
    return element;
}