В вашем примере сразу два косяка
1. там действительно 13 нод (узлов), потому что
Node это не только html-элементы, но и текст между ними (переводы строки и пробелы в вашем случае).
Можно перебирать не childNodes а
.children, который возвращает именно html-элементы, а не все узлы. Но это решает не все проблемы, потом что:
2. Указывая не 0 а i вы удаляете не все узлы, а каждый второй.
Дело в том, что childNodes и children это live коллекции и они обновляются при каждом изменении в родительском элементе.
При удалении нулевого элемента первый тут-же становится нулевым.
Затем вы увеличиваете i до единицы, удаляете первый (он изначально был вторым), а нулевой (который был первым) остался, и снова происходит сдвиг. Иногда, кстати, этот сдвиг не упевает произойти, так что этим способом нельзя пользоваться даже если вам хочется удалить именно каждый второй.
Можно бы перебирать с конца
for (let i=elem.children.length-1; i >= 0; i--) elem.childNodes[i].remove()
Можно удалять без всяких счетчиков
while (elem.firstChild) elem.removeChild(myNode.lastChild)
И наконец, можно удалять вообще без перебора!
elem.textContent = ''
Это не только самый короткий, но и самый быстрый способ, т.к. браузер не будет пытатся несколько раз перерисовать содержимое elem.