小提琴:http://jsfiddle.net/p35cobgx/3/
下面是我的树形结构:
Node
Node-1
Node-1-1......
现在我想为每个节点存储所有父节点的引用,如下所示:
节点
Node-1(应该只存储Node的引用,因为这是 Node-1的最后一个父节点
节点1-1(应存储所有父节点的引用,即节点-1和节点 节点因为Node是Node-1-1的最后一个父节点。
但是我的代码问题是我无法存储 Node for 1-1 节点的引用。
答案 0 :(得分:1)
我不确定这是否是您想要的答案,但现在是:
您可以使用以下方式访问父节点:
node.parentNode
这是一个属性,包含父节点的引用。
此外,访问父元素而不是节点有时会更好,因为空格也可以是节点,因此您可以使用此属性:
node.parentElement
答案 1 :(得分:1)
我将使用的算法是仅存储节点中的直接父节点。
因此,如果A是C的母亲和C的B
这使得A-> B-> C
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);你没有父母,因为它没有父母。
希望有所帮助!
答案 2 :(得分:1)
使用此条件分配父级:
obj.parent = data.parent || null;