Hallo,
Trau dich doch mal document.write und all.innerHTML einfach zu vergessen.
Das verstehe ich aber nicht
OK, ich mach's für dich noch mal verständlich:
var Neu = document.createElement("a"); //neuen Elementbaum, mit „a“ als Wurzelelement erzeugen
Neu.href = "seite.html"; //Das „href“-Attribut an dieses Wurzelelement anhängen
Neu.appendChild(document.createElement("img")); //innerhalb des Links ein „img“-Element erzeugen
Neu.lastChild.src = "bild.png"; //auf „img“ zugreifen und das Bild referenzieren
Neu.lastChild.border = "0"; //border-Attribut an's „img“ anhängen
Neu.lastChild.onmouseover = function(){return escape("Text für den Mouseover-Effekt")}; //onmouseover-Event auf dieses Element setzen.
Die Ausgabe könnte für dein Beispiel so aussehen:
var Ausgabeelement = document.getElementById("feld");
Ausgabeelement.replaceChild(Neu,Ausgabeelement.firstChild);
Ich hoffe, das war jetzt etwas verständlicher für dich. Um das DOM zu begreifen, könntest du ja auch mal den DOM-Inspector im Firefox aufmachen. Dort siehst du, was das mit den Kindknoten usw auf sich hat.
und außerdem möchte ich nicht meinen ganzen Quellcode neu schreiben,
Wenn die Link ohnehin oft die selben sind, kommt du doch eigentlich recht gut, wenn du obigen Code in eine Funktion packst, der das, was sich ändert als Parameter zugewiesen werden kann.
bis auf dieses eine Problem funktioniert ja alles.
In welchen Browsern? Safari unterstützt laut SELFHTML kein „document.all“. Und da sich dein Problem mit der proprietären Eigenschaft „innerHTML“ nicht lösen zu lassen scheint, ist es IMHO am besten, HTML gleich richtig zu erzeugen.
mfg. Daniel