2013-07-24 21 views
0

在下面的功能,我只得到父對象,而不是他們的孩子(或孫子)按預期:從後填充樹視圖,而不是讓孩子們

function nest(n) 
{ 
    for(var i=0;i<n.attributes.length;i++){ 
     var item = n.attributes[i]; 
     root.appendChild(item.data); 
    } 
} 

nest(me); 

如果我使用遞歸像root.appendChild(nest(item.data));我讓孩子和孫子,但不是父母。

我如何得到父母和孩子?

+1

你可以發佈一個包含你的數據集和演示的jsfiddle嗎? –

回答

1

在你的問題上你沒有明確的解釋,你現在擁有什麼以及你真正想要什麼,我會一槍。

它看起來像你想填充一些樹結構,但你只得到一些頂級節點。這是有道理的,因爲你總是調用root.appendChild,所以事情總是被添加到根節點。

我很困惑你的例子遞歸調用root.appendChild(nest(item.data))。您的nest函數不會返回任何內容,因此將它作爲參數傳遞給appendChild沒有任何用處。

您應該設計函數來接受當前基節點(您將添加下一級子節點)以及將由這些節點表示的東西的集合。根據您的數據結構,這將是這樣的:

function nest(base, items) { 
    for (var i=0; i<items.length; i++) { 
     var item = items[i]; 
     var new_child = base.appendChild(item.data); 
     nest(new_child, item.children); 
    } 
} 

如果你有,你要裝載到一個Ext樹,雖然結構良好的數據結構,你就應該能夠加載你的樹結構進入一個正確配置的商店,讓你的樹神奇地工作。如果你向我們展示你的數據結構,你可能會得到一些幫助。

+0

謝謝,它工作)) – otarb