2016-08-29 4 views
1

私は、基本的な再帰関数が動作しているが、現在の親に子ノードのx番号を追加したい..しかし、私の再帰関数のforループは、子ノードを現在の親ノードに追加します。ここに私のコードのjs binがあります。 http://jsbin.com/bihuvotupe/1/edit?html,js,outputDOMノードrecurssion

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; 
} 
+0

https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild-少なくとも2つの段落のうち、上位2段を読む –

答えて

1

単一ノードは、DOM内の1つの場所にあることができます。あなたのコードは単一のノードを作成し、それをいくつかの異なる場所に追加しようとします。ノードは最後の場所になります。

boxHelper()ファンクションforループ内に移動します。

+0

うーん、もう別の問題があります。 。子ノードは最後の親にのみ追加されています..すべての提案はありませんか?私はこれをrecurssion関数で作る必要があると思う。 – Zoolu

+0

jsbin.com/weqagobiwa/1/edit?html,js,output – Zoolu

+0

ああ、私はそれをhttp://jsbin.com/gociqebuye/edit?js,outputに固定したと思う。 – Zoolu

2

あなたforループ場合は、4人の新しい子供たちを作成していません。あなたは1つしか作成せず、それをparentに追加しようとしています。

http://jsbin.com/suhukiviqi/1/edit?html,js,output

+0

http://jsbin.com/weqagobiwa/1/編集?html、js、出力gahhhhh ..どのように私はこれを逃した。私は今何を期待しているのですか? – Zoolu

関連する問題