思路:固定oNode2不变,不断向上查找oNode1,直至找到两个节点的公共祖先节点。首先使用A.contains(B)方法判断oNode1是否是oNode2的祖先节点,如果是则直接返回oNode1,反之使用递归方法查找oNode1的父节点oNode1.parentNode和oNode2的公共祖先节点。

function commonParentNode(oNode1, oNode2) 
{
    //n1.contains(n2)用于判断n1是否是n2的祖先节点
    if(oNode1.contains(oNode2))
        return oNode1
    //n.parentNode用于求解n的父节点
    else 
        return commonParentNode(oNode1.parentNode,oNode2)
}

总结:n1.contains(n2)用于判断n1是否是n2的祖先节点;n.parentNode用于求解n的父节点。