I have the following piece of code that finds all elements in the document with classname foo and then removes them all
function(doc) {
v
Your problem is that the NodeList
returned by getElementsByClassName()
is live. Either convert it into an array first as Felix suggests or iterate backwards:
var items = doc.getElementsByClassName('foo');
var i = items.length;
while (i--) {
items[i].parentNode.removeChild(items[i]);
}
This works because the item removed from the list each iteration is the last item in the list, therefore not affecting earlier items.
I also changed doc.body
to items[i].parentNode
for greater generality, in case you need to deal with elements that are not direct children of the element.