InnerText / InnerHTML - Probleme mit Tabellen

Mik3e

Erfahrenes Mitglied
Guten Morgen!

Im Anschluss an folgenden Thread (der mir bei meinem Problem leider nicht wirklich weiterhilft) http://www.tutorials.de/tutorials143457.html&highlight=innerText habe ich noch eine Frage:

Hier ein Testscript:
HTML:
<html>
<head>
....
<script language="javascript">
function update() {
   alert(document.getElementById(1).innerHTML); // -> Liefert "<TBODY><TR><TD>TEST</TD></TR></TBODY>"
   alert(document.getElementById(1).innerText); // -> LIEFERT "TEST";
   document.getElementById(1).innerHTML="<tr><td>TEST2</tr></td>"; // Kann wegen der Tags nicht funktionieren wie ich in vorhin genannten Thread gesehen habe (Laufzeitfehler).
   document.getElementById(1).innerText="TEST2"; // Tabelle ist anschließend leer
}
</script>
</head>
<body>
<table id="1"><tr><td>TEST</td></tr></table>
<a href="javascript:update();">ÄNDERN</a>
</body>
</html>
Mir ist klar, dass es daran liegt, dass das ID Attribut im <TABLE> und nicht im <TD> Tag steht. Das lässt sich in meinem Fall aber leider nicht verhindern. An den Ladezeitproblem wie in Selfhtml beschrieben liegt es definitiv auch nicht (war mein erster Fehler).

Welchen anderen Lösungsweg gibt es, um den Inhalt auf "TEST2" zu ändern? Ich finde es sehr interessant, dass mir innerText von ID 1 zwar den richtigen Output liefert, ich anschließend aber diesen nicht ändern kann (siehe alerts und Kommentare im Testscript).

Es kann auch eine Lösung sein, die nur im IE möglich ist (da es sich um ein reines Admin-Tool handelt, das an den IE gebunden ist).

Danke & LG
Mike
 
Zuerst noch ein Tipp: Vergiss nicht die Anführungszeichen bei ids auch Zahlen sind in id Strings und müssen eigentlich in Anführungszeichen geschrieben werden, auch wenn einige Browser es nicht stört wenn man die weglässt, kann es doch passieren, dass das zu Fehler führt ( ...document.getElementById('1').... statt ...document.getElementById(1)... ! ).

Ansonsten benutze das DOM und gehe über die Child-Nodes. In deinem Fall müsste das funktionieren:
HTML:
document.getElementById('1').firstChild.firstChild.data = 'TEST2';
Warum fragst du eigentlich zwei mal so ziemlich das Gleiche obwohl du schon Antwort bekommen hast?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück