码迷,mamicode.com
首页 > 其他好文 > 详细

dom 节点查找

时间:2018-04-29 13:26:14      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:nbsp   font   ++   common   自己   col   class   function   返回   

题目描述

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

 

输入描述:

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 节点查找

标签:nbsp   font   ++   common   自己   col   class   function   返回   

原文地址:https://www.cnblogs.com/daheiylx/p/8970731.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!