1. 程式人生 > >查詢兩個不同元素最近的父節點

查詢兩個不同元素最近的父節點

題目描述:
查詢兩個節點的最近的一個共同父節點,可以包括節點自身
輸入描述:
oNode1 和 oNode2 在同一文件中,且不會為相同的節點

解題思路1:
採用DOM規範中的Node.contains方法,先檢查節點oNode1和oNode2的相互包含關係,
若兩個之間存在包含關係,則返回包含另一個元素的節點,如果兩節點無包含關係,採用將其中一個節點的父元素和另一個節點作為引數,遞迴呼叫函式,求出最近公共父節點
程式碼:

function commonParentNode(oNode1,oNode2){
   if(oNode1.contains(oNode2)){
      return
oNode1; }else if(oNode2.contains(oNode1)){ return oNode2; }else{ return arguments.callee(oNode1.parentNode,oNode2); } }

解題思路2:
判斷oNode1是否包含oNode2,如果包含,返回oNode1,如果不包含,將判斷oNode1的上一級父節點是否包含


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