Hallo Markus,
firstChild.nodeValue und firstChild.data funktionieren nur, wenn der Knoten existiert. In einigen Browserb genügt da ein Leerzeichen nicht. Ich fülle die Felder daher mit einem . Bei innerHTML ist das nicht nötig, da hier die entsprechenden Knoten erzeugt werden. Den Unterschied zwischen firstChild.nodeValue und firstChild.data kannst du im Selfhtml nachlesen.
Gruß, Jürgen