function commonParentNode(oNode1, oNode2) {let parentNode1 = oNode1.parentNode;let parentNode2 = oNode2.parentNode;if(oNode1.contains(oNode2)){return oNode1;}else if(oNode2.contains(oNode1)){return oNode2;}// 节点为null时抛出,防止无限递归if(!parentNode1 || !parentNode2){return null}if(parentNode1.contains(oNode2)){return parentNode1}else if(parentNode2.contains(oNode1)){return parentNode2}else{commonParentNode(parentNode1,parentNode2)}}
function pathToRoot(node) {
const ans = [];
//console.log("call:");
while(node != null) {
// console.log("**", node.className);
ans.push(node);
node = node.parentNode;
}
return ans;
}
function commonParentNode(oNode1, oNode2) {
const p1 = pathToRoot(oNode1);
const p2 = pathToRoot(oNode2);
//console.log("path: ", p1);
//console.log("path: ", p2);
let r1 = p1.length - 1, r2 = p2.length - 1, lastNode = null;
while(r1 >= 0 && r2 >= 0 && p1[r1] === p2[r2]) lastNode = p1[r1],r1--, r2--;
return lastNode;
} function commonParentNode(oNode1, oNode2) {
let parent1 = oNode1.parentNode
let parent2 = oNode2.parentNode
if(parent1 === parent2){
return parent1
}else if(parent1 === oNode2){
return oNode2
}else if(parent2 === oNode1){
return oNode1
}else{
return commonParentNode(parent1,parent2)
}
} function commonParentNode(oNode1, oNode2) {
if (!oNode1 || !oNode2)return false
if (oNode1.parentNode == oNode2) return oNode2;
if (oNode2.parentNode == oNode1) return oNode1;
if (oNode1 == oNode2) return oNode1;
return commonParentNode(oNode1.parentNode,oNode2) || commonParentNode(oNode1,oNode2.parentNode)
} function commonParentNode(oNode1, oNode2) {
// while循环
while(!oNode1.contains(oNode2)){
oNode1 = oNode1.parentNode
}
return oNode1
// 递归
if(oNode1.contains(oNode2)){
return oNode1
}
return commonParentNode(oNode1.parentNode,oNode2)
}