查找两个节点的最近的一个共同父节点

dom 节点查找

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

题目描述
    查找两个节点的最近的一个共同父节点,可以包括节点自身
输入描述:
    oNode1 和 oNode2 在同一文档中,且不会为相同的节点

解题思路:判断一个节点以及它的父节点是否包含另一个节点。

function commonParentNode(oNode1, oNode2) {
    while(true){
        oNode1 = oNode1.parentNode;
        if(oNode1.contains(oNode2)){
            return oNode1;
        }
    }
}

两边找

function commonParentNode(oNode1, oNode2) {
    let parentNode1 = oNode1.parentNode;
    let parentNode2 = oNode2.parentNode;
    while(true){
        if(parentNode1.contains(oNode2)){
            return parentNode1;
        }
        if(parentNode2.contains(oNode1)){
            return parentNode2;
        }
        parentNode1 = parentNode1.parentNode;
        parentNode2 = parentNode2.parentNode;
    }
}
全部评论
你这个while循环差点把我浏览器给整没了
10 回复
分享
发布于 2021-05-17 22:25
我觉得第一个解法的赋值应该放在判断后面(因为会有oNode1本身就是oNode2的父节点的可能)
9 回复
分享
发布于 2021-08-17 18:51
滴滴
校招火热招聘中
官网直投
写个改进版: while(!oNode1.contains(oNode2)){ oNode1 = oNode1.parentNode; } return oNode1
1 回复
分享
发布于 2022-07-23 17:08
两个方法都不对
1 回复
分享
发布于 2023-10-19 14:23 新疆

相关推荐

33 4 评论
分享
牛客网
牛客企业服务