function children:
获取curEle下所有元素子节点(兼容所有的浏览器),如果传递了tagName,可以在获取的集合中进行二次筛选,把指定的标签名获取到
//首先获取所有的子节点(childNodes),在所有子节点中把元素节点过滤出来
//如果多传递一个标签名的话,我们还在获取的子元素集合中把对应的标签名进行二次筛选
function children(curEle,nodeName){
//IE6-8下不能使用内置属性,自己写代码实现
if(/MSIE(6|7|8)/i.test(navigator.userAgent)){
var nodeList=curEle.childNodes;
var ary=[];
for(var i=0;i<nodeList.length;i++){
var curNode=nodeList[i];
if(curNode.nodeType===1){
ary[ary.length]=curNode;
};
}
}else{
//在标准浏览器中,直接使用children即可,但这样获取的是一个元素集合(类数组 ),为了和IE6-8保持一致,借用数组原型上的slice,实现把类数组转换为数组
ary=Array.prototype.slice.call(curEle.children);
}
//二次筛选
if(typeof tagName==="string"){
for (var j=0;j<ary.length;j++){
var curEleNode=ary[j];
if(curEleNode.nodeName.toLowerCase()!==tagName.toLowerCase()){//不是我想要的标签
ary.splice(j,1);
j--;
}
}
}
return ary;
}
网友评论