I'm trying to get a good grasp on recursion by implementing document.getElementsByClassName
. I've made something that works but I'd like to know if there is some blatant refactoring that should be done or perhaps some not-so-edge cases that might break it.
var getElementsByClassName = function(className){
var result = [];
function diveIn(motherNode, result, className){
var maNodes = motherNode.childNodes
for (var i = 0; i < maNodes.length; i++){
var classes = maNodes[i].classList || [];
classes.forEach(function(classy){
if (classy === className){
result.push(maNodes[i]);
}
})
if (maNodes[i].childNodes[0]){
diveIn(maNodes[i], result, className);
}
}
}
diveIn(document, result, className);
return result;
};