Дело в том, что
getElementsByTagName
возвращает динамическую коллекцию элементов, т.е. такую, которая автоматически обновляется при добавлении/удалении элементов. Поэтому сейчас у вас происходит следующее: удалили элемент с индексом
0
, и у всех остальных элементов изменился индекс на единицу вниз,
0
вместо
1
,
1
вместо
2
и т.д. При этом счётчик цикла вы на единицу увеличили, так что на следующей итерации удаляете элемент с индексом
1
- бывший
2
. А тот, который был
1
и стал
0
- его вы пропускаете. А после следующего удаления пропускаете ещё один. Ну и т.д. Каждый второй.
Какие тут есть варианты действий:
Ну и ещё кое-что. Обращаться к
body
по id - безумие, этот элемент существует в единственном экземпляре и ссылка на него доступна как свойство объекта
document
. Так что id уберите и замените
document.getElementById("body")
на
document.body
.