innerHTML in DOM2/XHTML
Konrad Rudolph
- javascript
Hallo Forum,
ich suche verzweifelt einen Ersatz für innerHTML in DOM. Es gibt zwar innerText, nämlich createTextNode(), was was ich brauche, wäre sowas à la createHtmlTree(), was es offensichtlich nicht gibt.
Gibt es einen Ersatz dafür?
Gruß,
KonRad -
Hallo,
ich suche verzweifelt einen Ersatz für innerHTML in DOM. Es gibt zwar innerText, nämlich createTextNode(), was was ich brauche, wäre sowas à la createHtmlTree(), was es offensichtlich nicht gibt.
Nein, aber createElement() und createAttribute(), appendChild() und setAttributeNode().
http://selfhtml.teamone.de/javascript/objekte/document.htm
Gibt es einen Ersatz dafür?
Ja. Du musst alle Elemente des gewünschten HTML-Tree erzeugen und _richtig_ zusammensetzen.
Bsp.:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>innerHTML vs. DOM</title>
<script type="text/javascript">
<!--
function mitInnerHTML() {
document.getElementById("dynBereich1").innerHTML="<h1>Ueberschrift</h1><p>Textabsatz</p><table border='1'><tr><td>TabellenZelle</td></tr></table>";
}
function mitDOM() {
var h1txt = document.createTextNode("Ueberschrift");
var h1 = document.createElement("h1");
h1.appendChild(h1txt);
document.getElementById("dynBereich2").appendChild(h1);
var ptxt = document.createTextNode("Textabsatz");
var p = document.createElement("p");
p.appendChild(ptxt);
document.getElementById("dynBereich2").appendChild(p);
var tdtxt = document.createTextNode("TabellenZelle");
var tbl = document.createElement("table");
var tbody = document.createElement("tbody");
var tr = document.createElement("tr");
var td = document.createElement("td");
td.appendChild(tdtxt);
tr.appendChild(td);
tbody.appendChild(tr);
tbl.appendChild(tbody);
var brd = document.createAttribute("border");
brd.nodeValue = "1";
tbl.setAttributeNode(brd);
document.getElementById("dynBereich2").appendChild(tbl);
}
//-->
</script>
</head>
<body>
<div id="dynBereich1"></div>
<button onclick="mitInnerHTML();">Setzte Inhalt mit innerHTML</button>
<div id="dynBereich2"></div>
<button onclick="mitDOM();">Setzte Inhalt mit DOM</button>
</body>
</html>
viele Grüße
Axel
Hi,
Nein, aber createElement() und createAttribute(), appendChild() und setAttributeNode().
ja, das ist mir bekannt.
Gibt es einen Ersatz dafür?
Ja. Du musst alle Elemente des gewünschten HTML-Tree erzeugen und _richtig_ zusammensetzen.
Das habe ich befürchtet. Sowas Idiotisches: das heißt ja im Prinzip, daß ich eine HTML-Parser in JavaScript nachbauen muß, wobei der Browser bereits einen integriert hat und diese Aufgabe weitaus besser erledigen könnte.
Hm, irgendwie finde ich, daß da jemand im DOM-Team nicht sehr weit gedacht hat...
auf jeden Fall ist das kein Ersatz für innerHTML. Schade.
Danke trotzdem.
Gruß,
KonRad -