2017-08-26 48 views
2

小提琴:http://jsfiddle.net/p35cobgx/3/如何爲每個嵌套的孩子存儲所有父母的引用?

下面是我的樹結構:

Node 
    Node-1 
    Node-1-1...... 

現在我想存回所有家長參考每個像下面的節點:

節點

節點1(應該只存儲節點的引用,因爲這是節點1的最後父節點 )

節點1-1(應存儲所有父節點的引用,即節點-1和節點 ,因爲節點是節點1-1的最後一個父節點)。

但我的代碼的問題是我無法存儲對節點1-1的節點的參考

enter image description here

+0

並不清楚你的要求。如果節點1-1具有對節點1的引用並且節點1具有對節點的引用,則節點1-1已經通過簡單地查看節點1的父節點而具有對節點的引用。爲什麼再次存儲它? –

+0

這個例子可能會幫助你(第二個演示):https:// stackoverflow。問題/ 19691917/how-do-display-a-collapsible-tree-in-angularjs-bootstrap/19692791#19692791 –

+0

@MaximShoustin謝謝你的參考,但我沒有看到你在哪裏存儲引用所有父母在那你能給我一些見解嗎? –

回答

1

使用此條件來分配父:

obj.parent = data.parent || null;

1

我不知道如果這正是你想要的答案,但在這裏它是:

您可以通過訪問父節點:

node.parentNode 

這是一個屬性並擁有父節點的引用。

而且,它有時更好的訪問,而不是節點父元素,因爲空格也可以是一個節點,以便您可以使用此屬性:

node.parentElement 
+0

節點是js對象而不是dom元素。您提供的代碼適用於dom元素 – quirimmo

1

我會使用的算法是隻存儲父節點中的直接父節點。

所以,如果A是父下向C

B和B這使得它A-> B->Ç

C.parent = B; B.parent = A;

如果我想的C所有的父母,我會做以下

var parentArray = getParent(C).slice(); 
    this.parents = []; 

    //use parentArray as you like now! 


    function getParent(obj){ 

    if(obj.parent){ 
    this.parents.push(obj.parent) //this.parents is an array 
    getParent(obj.parent); 
    }else{ 
    return this.parents; 
    } 
    } 

所以,如果你撥打電話的getParent(C);你得到它的所有父母B和A. 如果你打電話getParent(B);你只得到A. 如果你打電話getParent(A);你沒有父母,因爲它沒有父母。

希望有幫助!

+0

謝謝您的回答,但是父母在此代碼中來到這裏的位置是:this.parents.push(obj.parent)。是this.nodes.push(obj.parent)?? –

+0

this.parents只是一個可以直接使用的數組。它是一個對象上的數組。 請注意,上述代碼中的假設是,您已經設置了對象之間的父層次結構,即已設置C.parent = B.parent和B.parent = A.parent。 隨時提出更多問題。 – Amjad

+0

我也只是在上面的代碼中做了更多的改變,讓你更清楚你可以做什麼。 – Amjad

相關問題