一个获取第n个元素节点的js函数
作者:bea
一个获取第n个元素节点的函数,现在只能通过html标签获取元素,功能还不完善 演示:html <ul id="list"><li>1<button>a</button></li><li>2<button>b</button><button>o</button></li><p>test</p><li>3<
一个获取第n个元素节点的函数,现在只能通过html标签获取元素,功能还不完善
演示:html
<ul id="list">
<li>1<button>a</button></li>
<li>2<button>b</button><button>o</button></li>
<p>test</p>
<li>3<button>c</button></li>
<li>4<button>d</button></li>
<li>5<button>e</button></li>
</ul>
js:
/**
*
* @param parent父节点
* @param ele要选取的元素标签
* @param num第几个元素
* @return {*}
*/
function nth(parent,ele,num){
var _ele=Array.prototype.slice.call(parent.childNodes),eleArray=[];
//将父节点的子节点转换成数组_ele;eleArray为只储存元素节点的数组
for(var i= 0,len=_ele.length;i<len;i++){
if(_ele[i].nodeType==1){
eleArray.push(_ele[i]);//过滤掉非元素节点
}
}
if(arguments.length===2){
//如果只传入2个参数,则如果第二个参数是数字,则选取父节点下的第几个元素
//如果第二个参数是字符串,则选取父节点下的所有参数代表的节点
if(typeof arguments[1]==="string"){
_ele=Array.prototype.slice.call(parent.getElementsByTagName(arguments[1]));
return _ele;
}else if(typeof arguments[1]==="number"){
return eleArray[arguments[1]];
}
}else{
//如果参数齐全,则返回第几个某节点,索引从0开始
_ele=Array.prototype.slice.call(parent.getElementsByTagName(ele));
return _ele[num];
}
}
/*
测试
*/
var list=document.getElementById("list");
console.log(nth(list,"li",2).innerHTML);//选取第三个li元素
console.log(nth(list,"button",3).innerHTML)//选取第四个按钮
console.log(nth(nth(list,"li",1),"button",1).innerHTML);//选取第二个li下的第二个按钮
console.log(nth(nth(list,"li",1),"button"));//选取第二个li下的所有按钮
console.log(nth(list,2));//选取第二个元素
猜你喜欢
您可能感兴趣的文章:
- jQuery表格列宽可拖拽改变且兼容firfox
- Egret引擎开发指南之视觉编程
- Egret引擎开发指南之发布项目
- Egret引擎开发指南之运行项目
- JavaScript实现找出字符串中第一个不重复的字符
- Egret引擎开发指南之编译项目
- js和jquery中循环的退出和继续下一个循环
- Egret引擎开发指南之创建项目
- Mac OS X 系统下安装和部署Egret引擎开发环境
- Windows8下搭建Node.js开发环境教程
- javascript常见操作汇总
- 优化Node.js Web应用运行速度的10个技巧
- 初识Node.js
- node.js适合游戏后台开发吗?
- 浅析Node.js查找字符串功能
- Node.js实现在目录中查找某个字符串及所在文件
- iframe如何动态创建及释放其所占内存
- Javascript正则控制文本框只能输入整数或浮点数
- jquery制作select列表双向选择示例代码