JavaScript -- dom节点查找

题目描述

查找两个节点的最近的一个共同父节点,可以包括节点自身

输入描述:
在这里插入图片描述

由题可知:oNode1和oNode2 在同一文档中,可存在的父节点关系有三种。分别是:
1、同一个直接父节点
2、oNode1包含oNode2,即oNode1为最近的一个共同父节点
3、oNode1、oNode2并不互相包含
方法一:将三种情况一一列出,并返回值
function commonParentNode(oNode1, oNode2) {
    
    
        if(oNode1.parentNode == oNode2.parentNode) return oNode1.parentNode;
    for(;;oNode2 = oNode2.parentNode){
    
      //向上遍历oNode2,如果oNode1是oNode2的父节点,return oNode1
        if(oNode2 == oNode1) return oNode1;
        if(oNode1.parentNode == oNode2) return oNode2;  //如果oNode1和oNode2有相同的父节点,return oNode2
    }
}
方法二: 使用 contains()方法和递归实现

function commonParentNode(oNode1, oNode2) {
    
    
    if(oNode1.contains(oNode2))
        return oNode1;
    else return commonParentNode(oNode1.parentNode,oNode2);
}
方法三: 使用 contains()方法不递归
 if(oNode1.contains(oNode2)) return oNode1;
        else{
    
    
            for(;;oNode1 = oNode1.parentNode){
    
    
                if(oNode1.contains(oNode2))
                    return oNode1;
            }
        }

猜你喜欢

转载自blog.csdn.net/sanjun_done/article/details/114878353