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 节点查找的主要内容,如果未能解决你的问题,请参考以下文章