题解 | #共同父亲dom节点查找#
dom 节点查找
http://www.nowcoder.com/practice/74d74be449af4c66907fe2d6961c255c
function commonParentNode(oNode1, oNode2) {
let arr1 = [oNode1];
let arr2 = [oNode2];
let DOM1 = oNode1.parentNode;
let DOM2 = oNode2.parentNode;
// 遍历并存储所有oNode1和oNode2的父节点,直到document标签
while(DOM1){
arr1.push(DOM1);
DOM1 = DOM1.parentNode;
}
while(DOM2){
arr2.push(DOM2);
DOM2 = DOM2.parentNode;
}
// 两个数组从队尾开始向前遍历,直到找到第一个不同的节点
let i=arr1.length;
let j = arr2.length;
while(i!==0||j!==0){
if(arr1[i]!==arr2[j]){
break;
}
i--;j--;
}
// 返回该节点的父节点
return arr1[++i];
}