Christian Seiler: NS-Alternative zu document.all.xxxx.innerHTML !?

Beitrag lesen

Hallo sven,

document.getElementById("test").innerHTML = ....
[...]
Aber es scheint ja nicht gerade sehr sauber zu sein.

Warum sollte das nicht sauber sein? Im DOM-Standard ist das so definiert: http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-36113835

Mit document.getElementById('id') bekommst Du ein Objekt einer Kindklasse von HTMLElement zurück. Dieses kannst Du dann manipulieren.

Allerdings sollte gesagt werden, dass innerHTML *kein* Standard ist. Allerdings wird innerHTML von Internet Explorer ab 5 [1], Mozilla ab 0.irgendwas, Netscape ab 6.irgendwas (6.1 auf jeden Fall, 6.0 bin ich mir nicht ganz sicher), Konqueror ab 2.2, Opera ab 7 unterstützt.

Wenn Du _ausschließlich_ Text ersetzten musst, dann kannnt Du eine andere Eigenschaft als innerHTML verwenden, die auch mit Opera 6 funktioniert:

document.getElementById('test').firstChild.nodeValue = 'blablabla';

Allerdings funktioniert diese Methode nur, wenn der Absatz auch einen Inhalt enthält, also musst Du am Anfang <p id="test"> </p> oder so schreiben. (das   ist hier wichtig, da es einen Inhalt darstellt)

Viele Grüße,
Christian

[1] Der Internet Explorer 4 unterstützt innerHTML zwar auch, aber er kann kein DOM, daher schreibe ich ab 5. Wenn Du Internet Explorer 4 auch noch unterstützen willst, dann so:

if (document.getElementById) {
  // DOM
} else if (document.all) {
  // IE 4 methode mit document.all
} else {
  // weder DOM noch IE4
}