dom 层次遍历-仿underscore
2014-08-13 17:05
218 查看
经常在面试题中看到dom层次遍历,自己尝试着用underscore的式的方法写了个,试着还可以用。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title></head>
<body>
<div id="par">
<div id="first">
<p id="first1">
<span id="first11"><span id="first111"></span></span>
</p>
</div>
<div id="two">
<p id="two1">
<span id="two11"></span>
</p>
<p id="two2"></p>
</div>
<div id="three">
<p id="three1">
<span id="three11"></span>
</p>
</div>
</div>
<script
type="text/javascript">
var par=document.getElementById('par');
(function (){
var _=function(){};
this._=_;
function searchN(e,n){
var arr=[],
eles,
level=0;
if(!n){
n=1;}
if(e && e.nodeType==1){
arr.push(e);}
else {
return null;}
while(arr.length!=0){
if(n==level){return arr;}
len=arr.length;
while(len--){
e=arr.shift();
eles=e.childNodes;
for (var i = 0,length=eles.length; i < length; i++)
{
if(eles[i] && eles[i].nodeType==1){arr.push(eles[i]);}
};
}
level++;
}
return false;
}
_.searchN=searchN;
}).call(this);
console.log(_.searchN(par,2));
</script>
</body>
</html>
(function (){
var _=function(){};
this._=_;//挂载
function searchN(e,n){
var arr=[],
eles,
level=0;
if(!n){
n=1;}
if(e && e.nodeType==1){
arr.push(e);}
else {
return null;}
while(arr.length!=0){
if(n==level){return arr;}
len=arr.length;
while(len--){//len记录每一层节点的个数
e=arr.shift();//每次取出一个,直至该层所有的孩子被取出。
eles=e.childNodes;//得到每一层的所有孩子节点,这个地方也可以用e.children
for (var i = 0,length=eles.length; i < length; i++) {
if(eles[i] && eles[i].nodeType==1){arr.push(eles[i]);}//将孩子节点暂存数组中
};
}
level++;//当每一层节点遍历结束,层数加1
}
return false;
}
_.searchN=searchN;
}).call(this);
文章来源:http://www.youjobit.com/news/index.php?id=89
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title></head>
<body>
<div id="par">
<div id="first">
<p id="first1">
<span id="first11"><span id="first111"></span></span>
</p>
</div>
<div id="two">
<p id="two1">
<span id="two11"></span>
</p>
<p id="two2"></p>
</div>
<div id="three">
<p id="three1">
<span id="three11"></span>
</p>
</div>
</div>
<script
type="text/javascript">
var par=document.getElementById('par');
(function (){
var _=function(){};
this._=_;
function searchN(e,n){
var arr=[],
eles,
level=0;
if(!n){
n=1;}
if(e && e.nodeType==1){
arr.push(e);}
else {
return null;}
while(arr.length!=0){
if(n==level){return arr;}
len=arr.length;
while(len--){
e=arr.shift();
eles=e.childNodes;
for (var i = 0,length=eles.length; i < length; i++)
{
if(eles[i] && eles[i].nodeType==1){arr.push(eles[i]);}
};
}
level++;
}
return false;
}
_.searchN=searchN;
}).call(this);
console.log(_.searchN(par,2));
</script>
</body>
</html>
(function (){
var _=function(){};
this._=_;//挂载
function searchN(e,n){
var arr=[],
eles,
level=0;
if(!n){
n=1;}
if(e && e.nodeType==1){
arr.push(e);}
else {
return null;}
while(arr.length!=0){
if(n==level){return arr;}
len=arr.length;
while(len--){//len记录每一层节点的个数
e=arr.shift();//每次取出一个,直至该层所有的孩子被取出。
eles=e.childNodes;//得到每一层的所有孩子节点,这个地方也可以用e.children
for (var i = 0,length=eles.length; i < length; i++) {
if(eles[i] && eles[i].nodeType==1){arr.push(eles[i]);}//将孩子节点暂存数组中
};
}
level++;//当每一层节点遍历结束,层数加1
}
return false;
}
_.searchN=searchN;
}).call(this);
文章来源:http://www.youjobit.com/news/index.php?id=89
相关文章推荐
- underscore.js依赖库函数分析一(遍历)
- 创建二叉树:层次遍历--树的宽度高度,后序遍历--祖先节点
- 数据结构之树的层次遍历(附带查找)、深度求值
- 基于jdk的list 和 队列 linkedList 和父亲长子兄弟链表模型 实现的 树 的前序遍历,后序遍历和层次遍历
- Leetcode 107. Binary Tree Level Order Traversal II 二叉树层次遍历2 解题报告
- 二叉树的层次遍历 II
- JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
- 树的层次遍历
- 二叉树的遍历(前序、中序、后序、层次)
- 二叉树的遍历(前中后,层次)——legend
- PAT甲题题解-1064. Complete Binary Search Tree (30)-中序和层次遍历,水
- 二叉树 层次遍历 (queue)遍历的变式题(leetcode)
- PAT A 1020. Tree Traversals (25) 由两个遍历序列得层次遍历序列
- 二叉树的遍历-先序中序后序层次(java实现)
- 第11周—项目1(1)二叉树的层次遍历算法
- Binary Tree Zigzag Level Order Traversal 二叉树锯齿形层次遍历
- sdutacm-求二叉树的层次遍历
- jQuery的DOM操作之遍历节点
- 第11周项目1-验证算法(1)层次遍历算法的验证
- 第十一周实践项目1--二叉树的层次遍历算法