美文网首页
获取所有的元素子节点

获取所有的元素子节点

作者: gaoqizhuhui | 来源:发表于2017-08-06 10:31 被阅读0次

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;
}

相关文章

网友评论

      本文标题:获取所有的元素子节点

      本文链接:https://www.haomeiwen.com/subject/dnqwlxtx.html