I am writing a function for a library that takes an object of elements and removes it from the DOM. I have this working fine but was wondering if there is a way to do a single for
loop? I found that NodeLists
and HTMLCollections
can't use the same for loop so I build an array then remove the elements with the same loop.
_remove = function(elem) {
if(!elem) { return false; }
// getElementById
if(!elem.length) {
if(elem.parentNode) {
elem.parentNode.removeChild(elem);
}
// querySelectorAll, jquery, getElementsByClassName, getElementsByTagName
} else {
var elems = [];
for(var j = 0; j<elem.length; j++) {
if(elem[j]) {
elems.push(elem[j]);
}
}
for(var i=0; i<elems.length; i++) {
if(elems[i].parentNode) {
elems[i].parentNode.removeChild(elems[i]);
}
}
return false;
}
}
called by:
_remove(document.getElementById('someId'));
_remove(document.getElementsByClassName('someClass'));
_remove(document.getElementsByTagName('tag'));
_remove($('#someId));
_remove($('.someClass));
_remove(document.querySelectorAll('someID or Class or Tag));