Fe-interview: [js] 第190天 用原生js实现类似getElementsByClassName的方法,不能使用querySelectorAll

Created on 22 Oct 2019  ·  3Comments  ·  Source: haizlin/fe-interview

第190天 用原生js实现类似getElementsByClassName的方法,不能使用querySelectorAll

js

Most helpful comment

function getElementsByClassName(className)
    const tags = document.getElementsByTagName('*');
    const tempTags = [];
    for(let i=0, len = tags.length; i< len; i++)
    {
        let tag = tags[i];
        tag.classList.contains(className) && tempTags.push(tag)
    }
    return tempTags;
}

All 3 comments

function getElementsByClassName(className)
    const tags = document.getElementsByTagName('*');
    const tempTags = [];
    for(let i=0, len = tags.length; i< len; i++)
    {
        let tag = tags[i];
        tag.classList.contains(className) && tempTags.push(tag)
    }
    return tempTags;
}

实现的方式有很多种,楼上用了document.getElementsByTagName, 那我这里就用document.all

//正则实现

function getElementsByClassName(className){
    const tags = document.getElementsByTagName('*');
    const reg = new RegExp("\\b" + className + "\\b");
    const tempTags = [];
    for(let i=0, len = tags.length; i< len; i++)
    {
        let tag = tags[i];
        reg.test(tag.className) && tempTags.push(tag)
    }
    return tempTags;
}
Was this page helpful?
0 / 5 - 0 ratings