1、如果使用 contains
函数的话还是很简单
function commonParentNode(oNode1, oNode2) { while(oNode1) { if(oNode1.contains(oNode2)) { return oNode1 } oNode1 = oNode1.parentNode } }
2、暴力解
function commonParentNode(oNode1, oNode2) { var nodeList1 = [], nodeList2 = [] while (oNode1) { nodeList1.unshift(oNode1) oNode1 = oNode1.parentNode } while (oNode2) { nodeList2.unshift(oNode2) oNode2 = oNode2.parentNode } var cur = 0, commonNode = null while (cur < nodeList1.length && cur < nodeList2.length) { if (nodeList1[cur] === nodeList2[cur]) { commonNode = nodeList1[cur] } cur++ } return commonNode }