Das Problem ist vermutlich, dass du quasi live innerHTML mit einer regulären Ausdruck tauschen möchtest.
Also wird bei
var HTML = element.innerHTML;
der Variablen HTML nur eine Referenz auf die Eigenschaft "innerHTML" des Objektes "element" übergeben, anstatt der Inhalt dieser Eigenschaft als String?
Nein, umgekehrt der Inhalt wird als String übergeben. Allerdings ist die Zuweisung keine normale Stringzuweisung es passiert ja was.
Deutlicher wird das, wenn du in deinem Beispiel mal eine Tabelle einfügst:
var HTML = testobjekt.innerHTML;
testobjekt.innerHTML = '<table><tr><td>Dieser Absatz wurde eingefügt</td></tr></table>';
alert('innerHTML hachher:\n'+testobjekt.innerHTML);
Wie du siehst sind die Tags in Großbuchstaben umgewabdelt worden und ein TBODY Element eingefügt worden.
Warum kann also dieses Schandwerk von IE nicht einfach das tun, was eine syntaktisch und logisch korrekte Programmierung verlangt?!!
Weil eben mehr passiert als du erwartest.
Struppi.