JS代码题14

2019-12-08  本文已影响0人  twentyshaw

实现类似getElementsByClassName 的功能

自己实现一个函数,查找某个DOM节点下面的包含某个class的所有DOM节点。不允许使用原生提供的getElementsByClassName,querySelectorAll等原生提供DOM查找函数。

代码如下:

function findClass(node,name){
    var nodes
    if(node){
        nodes = node.children       
    }else{ //没有传节点的情况下,就搜索整篇文档内的元素
        nodes = document.getElementsByTagName('*') 
    }
    var classes
    var result = []
    for (var i = 0; i < nodes.length; i++) {
        classes = nodes[i].className.split(' ') //一个元素可能拥有多个classname,被空格隔开
        if (classes.indexOf(name) !== -1) {
            result.push(nodes[i])
        }
    }
    return result
}

还是用到了原生查找函数:document.getElementsByTagName,不知道有没有不能这个函数能获取所有元素节点的方法

上一篇 下一篇

猜你喜欢

热点阅读