题解 | #dom 节点查找#

dom 节点查找

http://www.nowcoder.com/practice/74d74be449af4c66907fe2d6961c255c

1.让其中一个节点oNode1一步一步往上挪,每挪一步就让另一个节点oNode2往上搜索看看能否与oNode2相遇,若无法相遇则返回原位,等oNode挪动之后再继续往上跑
function commonParentNode(oNode1, oNode2) {
let parent1=oNode1.parentNode;
let parent2=oNode2.parentNode;
while(parent1!=parent2){
//用一个临时变量将parent2暂存起来,为了parent2往上找不到时能够返回原来位置
let temp=parent1;
//parent2不断往上找,直到相等或者碰到html标签
while(parent1!=parent2&&parent2!=document.documentElement){
parent2=parent2.parentNode;
}
//parent2找完一圈找不到时,parent2返回原点,并让parent1往上移一个节点
parent2=temp;
parent1=parent1.parentNode;
}
//此时已经找到,parent1==parent2返回其中一个即可
return parent1;
}
2.使用node.contains(otherNode)方法
function commonParentNode(oNode1, oNode2) {
//使用node.contains(otherNode)方法
while(oNode1!=oNode2){
//两个节点不相等时判断oNode1是否包含oNode2,若包含,oNode1即为所求
if(oNode1.contains(oNode2))return oNode1;
//若不包含,oNode往上移,继续判断
oNode1=oNode1.parentNode;
}
return oNode1;
}

全部评论

相关推荐

头像
05-12 09:14
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务