前端 - js - 编程题6 - DOM节点查找

早过忘川 提交于 2020-03-08 03:57:22

题目描述

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

输入描述:

oNode1 和 oNode2 在同一文档中,且不会为相同的节点

function commonParentNode(oNode1, oNode2) {
    if(oNode1.contains(oNode2)){
        return oNode1;
    }else{
        return commonParentNode(oNode1.parentNode, oNode2);//使用递归的思路往上查找,找到一个节点的父节点,看他是否包含另一个DOM节点
    }

}

function commonParentNode(oNode1, oNode2) {
    var on1_parents = getParents(oNode1);
    var on2_parents = getParents(oNode2);
    var i = on1_parents.length;
    var j = on2_parents.length;
    for(; i >= 0 && j >= 0 && on1_parents[i] === on2_parents[j]; i--, j--);
    return on1_parents[i+1];
}

function getParents(oNode) {
    var parents = [];
    var parent = oNode;
    while(parent) {
        parents.push(parent);
        parent = parent.parentElement;
    }
    return parents;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!