document.all.innerHTML durch getElementByID ersetzen

LongDonJohn

Mitglied
Hallo,

ich benutze document.all.innerHTML um Objekten einen Text oder den Inhalt einer Variablen zuzuweisen. Allerdings kann wohl nicht jeder Browser mit dem innerHTML umgehen und man sollte besser getElementByID benutzen. Allerdings finde ich nicht die richtige Anweisung, damit es damit klappt.

Hier zunächst, was ich bisher mache:

Code:
document.all.meinObjekt.innerHTML=Variable;
document.all.meinzweitesObjekt.innerHTML="meinText";

jetzt habe ich folgendes probiert:

Code:
document.getElementById("meinObjekt").firstChild.nodeValue="meinText";

und viele Abwandlungen davon, die ich euch erspare, weil sie eh nicht funktionieren...

Weiß jemand, wie es richtig geht und kann mir den Trick verraten?

Danke!

Gruß
John
 
Mit innerHTML können schon mehrere Browser umgehen, eigentlich alle Gebräuchlichen.

document.all hingegen kennen nur IE und Opera.

Woran es hapert, kann man sagen, wenn du mal den kompletten Code von "meinObjekt" postest.

Wenn dies Element bspw. leer ist...also nicht wenigstens ein   beinhaltet, besitzt es keinen Kindknoten...dann wäre "firstChild" die Fehlerquelle.

Eine andere Ursache könnte sein, dass dies Element nicht die ID, sondern das "name"-Attribut meinObjekt besitzt....während der IE da sehr tolerant ist, bestehen andere Browser auf die ID.
 
Es wird immer ein Inhalt zugewiesen. Auf der seite wird das Objekt dann in einer Tabelle aufgerufen, und zwar so:

Code:
<td id="meinObjekt"></td>

In der Tabellenzelle steht dann der Inhalt, den ich ihr vorher durch document.all.meinObjekt.innerHTML zugewiesen habe.

Das mit diesen Knoten (firstChild.node, usw) kapiere ich nicht so ganz. Wie finde ich heraus, welcher Knoten, was ist und wo ich nun den Text reinschreiben kann? Die Erklärung von SelfHtml ist da auch nicht gerade hilfreich.
 
Es ist wie in meiner 1.Vermutung....die Zelle hat keinen Inhalt, somit auch keinen Kindknoten, auf den man zugreifen könnte.

Packe ein &nbsp; in die Zelle... dann ist ein Kindknoten da...nämlich ein Textknoten.
Du kannst dann per firstChild darauf zugreifen(das bezieht sich auf den ersten Kindknoten eines Knotens)
 
Zu früh gefreut!

Mit Text und dem Inhalt von Variablen klappt es. Wenn ich aber einen Html-Tag dort reinschreibe, wird dieser tag auf den Bildschirm geschrieben, statt ihn auszuführen.

Der tag wird wie folgt erstellt:

Code:
document.getElementById("meinObjekt").firstChild.nodeValue="<a href='meinLink.php?"+meineVariable+"'>Link</a>";

Muss ich hier was anderes als .nodeValue einsetzen, oder woran könnte es liegen, dass er mir den kompletten Tag auf dem Bildschirm ausgibt?
 
Das liegt daran, dass nodeValue etwas anderes ist als innerHTML.

Wenn du neue HTML-Elemente in einen Knoten einfügen willst, musst du diese erst erzeugen(createElement()) und dann in den Elternknoten einfügen(appendChild())
 

Neue Beiträge

Zurück