Hallo Georg,
// Zeilen loeschen
for (var i=1; i<nrNodes; i++) {
parent.removeChild(nodes[i]);
}
ich glaube, hier hakt es. Sobald du ein "Child" entfernst, rücken die anderen nach. Du löscht z.B. Nr. 0, dann wird die 1 zur 0, die 2 zur 1, etc.. Läsche immer die Nr. 0, also firstChild.
Übrigens zählt Javascript, wie die meisten Programmiersprachen, Elemente von 0 ab.
Gruß, Jürgen