查詢兩個不同元素最近的父節點
阿新 • • 發佈:2018-12-30
題目描述:
查詢兩個節點的最近的一個共同父節點,可以包括節點自身
輸入描述:
oNode1 和 oNode2 在同一文件中,且不會為相同的節點
解題思路1:
採用DOM規範中的Node.contains方法,先檢查節點oNode1和oNode2的相互包含關係,
若兩個之間存在包含關係,則返回包含另一個元素的節點,如果兩節點無包含關係,採用將其中一個節點的父元素和另一個節點作為引數,遞迴呼叫函式,求出最近公共父節點
程式碼:
function commonParentNode(oNode1,oNode2){
if(oNode1.contains(oNode2)){
return oNode1;
}else if(oNode2.contains(oNode1)){
return oNode2;
}else{
return arguments.callee(oNode1.parentNode,oNode2);
}
}
解題思路2:
判斷oNode1是否包含oNode2,如果包含,返回oNode1,如果不包含,將判斷oNode1的上一級父節點是否包含
function commonParentNode(oNode1,oNode2){
for(;oNode1;oNode1 = oNode1.parentNode){
if (oNode1.contains(oNode2)){
return oNode1;
}
}
}