Get Elements By Classname
<div class="a" id="root">
<div class="b" id="b-1">
<div class="a" id="a-2">
<div class="d" id="d-1"></div>
</div>
<div class="c" id="c-1">
<div class="a" id="a-3">
<div class="d" id="d-2"></div>
</div>
</div>
</div>
</div>
function getElementsByClassName(root, className) {
const search = (node) => {
let results = [];
if (node.classList.contains(className)) {
console.log(node.id, node.classList[0]);
results.push(node);
}
for (let child of node.children) {
let res = search(child);
results = [...results, ...res];
}
return results;
};
return search(root);
}
const root = document.getElementById("root");
console.log(getElementsByClassName(root, "a"));
// root a
// a-2 a
// a-3 a
// [HTMLDivElement, HTMLDivElement, HTMLDivElement] ~ [div#root.a, div#a-2.a, div#a-3.a]