练习牛客网笔试题--前端js--2-demo节点查找
// 题目描述
// 查找两个节点的最近的一个共同父节点,可以包括节点自身
// 输入描述:
// oNode1 和 oNode2 在同一文档中,且不会为相同的节点
1.自己的练习
function commonParentNode(oNode1, oNode2) {
oNode1 = oNode1 || document.querySelector('#oNode1');
oNode2 = oNode2 || document.querySelector('#oNode2');
var parent1 = oNode1.parentNode;
var parent2 = oNode2.parentNode;
// 数组Node保存节点的父节点
var Node = {
oNode1: [oNode1],
oNode2: [oNode2]
};
// 循环 将node1的父节点都push到数组中
while (parent1) {
Node.oNode1.push(parent1);
var parent1 = parent1.parentNode;
}
while (parent2) {
Node.oNode2.push(parent2);
var parent2 = parent2.parentNode;
}
// 遍历匹配
for (var i = 0; i < Node.oNode1.length; i++) {
var result = Node.oNode2.find(item => item === Node.oNode1[i]);
if (result) {
return result;
}
}
}
2.题解
function commonParentNode(oNode1, oNode2) {
let parent1 = oNode1.parentNode;
let parent2 = oNode1.parentNode;
if (parent1 === parent2) {
return parent1
} else {
commonParentNode(parent1, parent2)
}
}