Was macht createHTML? Ich hab das nicht als allgemein existierende Funktioni gefunden.
Vielleicht erzeugt das ein zusätliches a-Element, so dass die Suche nach getElementsByTagName dann immer eines mehr zurückgibt und du damit mit steigendem Index immer wieder auf dem gleichen Element landest?
Ich würde mir übrigens die öfter verwendeten Ausdrücke in einer Variable merken, wie document.getElementsByTagName("a"). Dann liest sich das gleich viel einfacher.