innerHTML und DOM

Ntti

Mitglied
Hallo!

ich möchte invalides XHTML mit Hilfe von innerHTML in ein Document aufnehmen so etwa:

Code:
var parent = document.getElementById("list");
parent.innerHTML = invalidhtml;

Doch das funktioniert nicht also wenn ich nachher draufzugreifen will,zb ausgeben zum testen
geht das nicht. da bekomm ich immer null
Code:
alert(parent.nodeValue);

Was jemand ob es überhaupt stimmt das man damit sowas machen kann? Und worauf man dabei besonders achten musss?

Vielen Dank und lg
Ninette
 
"parent" ist ein geschütztes Word bei Javascript und bezeichnet den übergeordneten Frame. Daher kannst du es nicht als Variablen-Namen nehmen. Das wird wohl den ganzen Fehler ausmachen.

Nebenbei ist es aber sehr schlechter Stil invalides HTML mittels Javascript für den Validator aufzubereiten. Das lässt es zwar durch den Validator kommen, macht es aber nicht valider, macht dafür aber einen schlechten Eindruck.
 
Zuletzt bearbeitet:
danke erstmals für deine antwort,
hast du zuerst was anderes hingeschrieben gehabt, ich hab per mail was anderes bekommen, egal.

das mit dem parent ist es nicht, es heisst jetzt anders und es geht trotzdem nicht.
ich weiss dass es nicht schön und gut ist sowas zu machen aber ich hab keine andere wahl, ich verwende für meine application daten von verschiedene seiten und die sind nun mal nicht alle valid. es wäre mir natürlich lieber wenn ich es zuerst von invalides html zu xhtml convertieren könnte aber ich wüsste nicht wie. oder weisst du vielleicht wie man das schnell unkompliziert macht? und es in ein xul programm einbindet?

lg Ninette
 
selfhtml hat gesagt.:
nodeValue
Speichert den Wert oder Inhalt eines Knotens. Bei Textknoten ist dies der Text, bei Attributknoten der zugewiesene Attributwert. Bei Elementknoten hat diese Eigenschaft den Wert null.

Da steht die Begründung...document.getElementById("list") ist zweifels ohne ein Elementknoten.

Folgendes funktioniert allerdings:
Code:
<span id="list"></span>
<script type="text/javascript">
<!--
obj = document.getElementById("list");
obj.innerHTML = 'invalidhtml';
alert(obj.firstChild.nodeValue);
//-->
</script>
...weil der erste Kindknoten des Ursprungsknotens ein Textknoten ist.

Hast du allerdings folgende Konstellation:
Code:
<span id="list"></span>
<script type="text/javascript">
<!--
obj = document.getElementById("list");
obj.innerHTML = '<nobr>invalidhtml</nobr>';
alert(obj.firstChild.nodeValue);
//-->
</script>
...gehts wieder nicht, weil der erste Kindknoten nun wieder ein Elementknoten(<nobr>) ist.

Was spricht dagegen, den Inhalt des Elementes per innerHTML auszulesen?
 
die 2 konstellation hab ich gehabt

wenn ich den inhalt des elements mit innerHTML auslese, kann ich dann die kinder von innerhtml mittels der domfunktionen auslesen oder manipulieren?
zb das <nobr> ?
ich werds mal ausprobieren
 
Kreiere einen Dummie-Elementknoten, und weise ihm die innerHTML-Eigenschaft zu...dann solltest du darauf normalen Zugriff mittels der DOM-Methoden haben:)
 
danke erstmals für deine antwort,
hast du zuerst was anderes hingeschrieben gehabt, ich hab per mail was anderes bekommen, egal.
Nur um die Sache zu klären: Hatte zuerst etwas anderes geschrieben, dann war mir das mit dem parent aufgefallen und habe gemerkt dass mein erster Beitrag Mist war. Sorry, dass es der Zweite auch war.
 
also ich hab weiter herumprobiert das mit nodeValue usw. auszugeben, ist aber nicht gegangen. Und jetzt bin ich drauf gekommen warum.
Code:
 obj.innerHTML = "invalidhtml";
schreibt garnichts rein.

also ich hab ein document und ein element erzeugt und dem mit innerHTML ein inhalt zugewiesen und habs dann serialisiert und ausgegeben:
Code:
var doc1 = document.implementation.createDocument("http://www.w3.org/TR/REC-html40","html",null);
var document_element=doc1.documentElement;
var newElem = doc1.createElement("body");
document_element.appendChild(newElem);
var list=doc1.getElementsByTagName('body');
//alert(list.length);
var obj= list.item(0);
obj.innerHTML = "invalidhtml";
	var serial = new XMLSerializer();
	var doc1string= serial.serializeToString(doc1);
	alert(doc1string);

Und die Ausgabe war:

Code:
 <a0:html xmlns:a0=http://www.w3.org/TR/REC-html40><body/></a0:html>

1. warum steht da a0 ?
2. warum ist der body element leer?
Auf der XUL Planet seite steht das die innerHTML Eigenschaft nur bei HTML Documente und Elemente geht. Aber beim Erstellen von documenten kann man beim doctype nur null hinschreiben, woher weisst der dom ob mein doc html oder xml ist?

Danke nochmals
lg Ninette
 

Neue Beiträge

Zurück