dom 节点查找

Posted 大黑ylx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dom 节点查找相关的知识,希望对你有一定的参考价值。

题目描述

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

 

输入描述:

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

 

代码:

 1 //方法一
 2 //oNode.contains(oNode2):   父节点oNode(或自己)包含子节点oNode2,返回true
 3 //这个方法比递归的方法效率要高
 4 function commonParentNode(oNode1, oNode2) {
 5     while(oNode1){
 6         if(oNode1.contains(oNode2)){
 7             return oNode1;
 8         }
 9         oNode1 = oNode1.parentNode;
10     }
11 }
12 
13 //方法二:递归
14 function commonParentNode(oNode1, oNode2) {
15     if(oNode1.contains(oNode2)){
16         return oNode1;
17     }
18     else {
19         return commonParentNode(oNode1.parentNode,oNode2);
20     }
21 }
22 
23 //方法三:比较父节点
24 function commonParentNode(oNode1, oNode2) {
25     //取oNode1的父节点
26     var parent1=[];
27     parent1.push(oNode1);
28     while(oNode1.parentNode){
29         parent1.push(oNode1.parentNode);
30         oNode1 = oNode1.parentNode;
31     }
32      //取oNode2的父节点
33     var parent2=[];
34     parent2.push(oNode2);
35     while(oNode2.parentNode){
36         parent2.push(oNode2.parentNode);
37         oNode2 = oNode2.parentNode;
38     }
39     //比较
40     var i = 0 , j =0;
41     while(i<parent1.length){
42         j = 0;
43         oNode1 = parent1[i++];
44         while(j<parent2.length){
45             if(oNode1 == parent2[j++]){
46                 return oNode1;
47             }
48         }
49     }
50     return null
51 }

 

以上是关于dom 节点查找的主要内容,如果未能解决你的问题,请参考以下文章

DOM操作——怎样添加移除移动复制创建和查找节点

DOM操作怎样添加移除移动复制。创建和查找节点?

JS中的DOM操作怎样添加移除移动复制创建和查找节点

DOM操作——怎样添加移除移动复制创建和查找节点

5、dom 结构操作怎样添加、移除、移动、复制、创建和查找节点

DOM操作