JSFiddle - React, Tailwind, and code Playground

by gabs00

HTML

<div class= "a" id= "top">
    <div class ="a" >
    </div>
    <div class = "b">
                <div class ="a" >
                </div>
        <div class = "b">        
        </div>
    </div>
</div>

JavaScript

var classes = 'a';
console.log(getElementsByClassName(classes));
console.log(document.getElementsByClassName(classes));

function getElementsByClassName(classes, elem){
    if(!elem){
        elem = document.body;   
    }
    var results = [];
    var target_classes = classes.split(' ');
    var class_list = elem.classList;
    if(class_list){
        if(check_classes(target_classes, class_list)){
            results.push(elem);   
        }
    }
    if(elem.hasChildNodes()){
        var children = elem.childNodes;
        for(var i = 0; i < children.length; i++){
              var matches = getElementsByClassName(classes, children[i]);
              transfer(results, matches);
        }
        
    }
    return results;
}

function transfer(in_array, out_array){
    var item;
    while(item = out_array.shift()){
        in_array.push(item);   
    }
}
function check_classes(classes, class_list){
    for(var i = 0; i < classes.length; i++){
        if(!class_list.contains(classes[i])){
            return false;   
        }
    }
    return true;
}