Jan Novak wrote:
> es ist mir nicht möglich, einen Text, bestehend aus "text<br>weiteres"
> zu einer erstellten Tabelle hinzu zu fügen. Die <br> werden niht
> ausgewertet. Mein Code (Ausschnitt):
>
> out= "html text mit <br> inside";
Dort sollte mindestens
var out = "html text mit <br> inside";
stehen.
> var tableBody = document.createElement('TBODY');
> var tr = document.createElement('TR');
> tableBody.appendChild(tr);
> var td = document.createElement('td');
> // var p = document.createElement('p');
> // p.innerHTML=out;
> td.innerHTML=out;
> //td.appendChild(p);
> tr.appendChild(td);
>
> Ich habs mit p's, div's oder span's, innerText, innerHTML oder auch
> createTextNode innerhalb des TD's versucht, welche ich dem td element
> hinzufüge. Brachte alles keinen Erfolg.
Aus dem obigen Quelltext geht hervor: Du hast zwar das td-Element dem TR-
Element hinzugefügt, aber das TR-Element nicht dem TBODY-Element, und das
TBODY-Element nicht einem table-Element. (Ansonsten ist das bis dahin fast¹
die richtige Vorgehensweise, denn sie vermeidet mehrfaches Rendering.)
Einfacher formuliert: Du hast anscheinend vergessen, Deinen Unterbaum in den
Dokumentbaum „einzuhängen“.
Daher befindet sich Dein td-Element nicht im Dokumentbaum, sondern nur ein
td-Elementobjekt im Heap.
Wenn ich nach Ausführen Deines (originalen) Codes in der Chromium-Konsole
ein table-Elementobjekt im Dokument mit “table” referenziere und
table.appendChild(tableBody);
aufrufe, dann funktioniert das bei mir (in einem beliebigen HTML5-Dokument –
für den Test habe ich einen Wikipedia-Artikel benutzt) einwandfrei, d. h. es
erscheint der Text mit dem Zeilenumbruch im Dokument (auch wenn das Markup
so nicht empfohlen wird).
Falls das nicht die Ursache ist, dann liegt es möglicherweise daran, dass
Du syntaktisch fehlerhaftes Markup, oder Quelltext, der an dieser Stelle zu
syntaktisch fehlerhaftem Markup führen würde, einzufügen versuchst.
In XHTML sind “TBODY”- und “TR”-Elemente ungültig; es muss dort “tbody” und
“tr” heissen. Ausserdem ist “<br>” ungültig (weil nicht geschlossen); es
muss dort “<br/>” heissen.
In HTML, insbesondere HTML5, ist es nicht nötig (aber erlaubt), bei der
Erzeugung des Elementobjekts den Elementtyp mit Grossbuchstaben zu
schreiben. Konsistenz in der Schreibung ist empfehlenswert.
Die innerHTML-Eigenschaft wird IIRC von einigen Layout-Engines im XHTML-
Modus unterstützt, von anderen nicht. Daher ist auch mit dieser Eigenschaft
ein XHTML-Problem möglich.
Ausserdem ist bekannt, dass die Verwendung der innerHTML-Eigenschaft in
Zusammenhang mit Tabellen zu Problemen führen kann.
Ohne Angabe der Laufzeitumgebung (z. B.: welcher Browser, welche Browser-
Version?) lässt sich nichts Genaueres dazu sagen.
__________
¹ Logisch wäre es in diesem Fall, das tr-Elementobjekt zuletzt zu
erstellen. Der von Dir gewählte Weg ist nur dann sinnvoller, wenn
Du auch testest, ob das Objekt erstellt werden konnte, bevor Du es
benutzt. Diese Tests fe len aber bei Dir.
--
PointedEars
<
https://github.com/PointedEars> | <
http://PointedEars.de/wsvn/>
Twitter: @PointedEars2
Please do not cc me. /Bitte keine Kopien per E-Mail.