Paul Styrnol: Verständnisproblem: appendChild in for-Schleife

Beitrag lesen

Hallo,

ich bin zur Zeit am JavaScript lernen und bin bei einer kleinen Übung auf ein Verhalten gestoßen, welches ich nicht ganz nachvollziehen kann. Es geht um folgenden Code:

  
var ueberschriften = new Array();  
ueberschriften = document.getElementsByTagName("h1");  
  
var lulu = document.createTextNode(" lulu");  
var span = document.createElement("span");  
span.appendChild(lulu);  
  
for (var i = 0; i < ueberschriften.length; i++) {  
  if (ueberschriften[i].firstChild.nodeName == "A") {  
  
    ueberschriften[i].appendChild(span);  
    alert("Stop");  
  }  
}  
  
// ###################################################  
  
var ueberschriften = new Array();  
ueberschriften = document.getElementsByTagName("h1");  
  
for (var i = 0; i < ueberschriften.length; i++) {  
  if (ueberschriften[i].firstChild.nodeName == "A") {  
  
    var lulu = document.createTextNode(" lulu");  
    var span = document.createElement("span");  
    span.appendChild(lulu);  
  
    ueberschriften[i].appendChild(span);  
    alert("Stop");  
  }  
}  

In beiden Varianten wird der Text wie gewünscht an die Überschrift angefügt, allerdings verschwindet er in der oberen Variante beim nächsten Schleifendurchlauf wieder. Bei 3 Überschriften ist der Ablauf also folgender (das alert() hab ich zur Kontrolle eingebaut):

Überschrift1 lulu
Überschrift2
Überschrift3
[Alert]

Überschrift1
Überschrift2 lulu
Überschrift3
[Alert]

Überschrift1
Überschrift2
Überschrift3 lulu
[Alert]

Bei der zweiten Variante klappt alles und die Überschriften behalten ihren Zusatz. Das ist zwar schön und gut, aber ich würde gerne verstehen warum das in der ersten Variante nicht klappt bzw. warum der Text wieder verschwindet. Warum muessen die Variabeln in der Schleife deklariert werden?

Das einzige was ich im Archiv dazu gefunden habe ist http://forum.de.selfhtml.org/archiv/2007/1/t144618/, das Verschwinden scheint da allerdings am Neuladen der Seite zu liegen, bei mir ist das ja nicht der Fall.

Viele Grüße
Paul