innerHTML und DOM
Jürgen Berkemeier
- dhtml
Hallo,
ich möchte innerhalb einer Seite einen Knoten einschließlich seiner Child-Knoten (Text, Kursiver Text, fetter Text, Zeilenumbruch) an eine andere Stelle kopieren. Hierzu benutze ich "document.getElementsByTagName("span")[i].innerHTML". Leider wird die Eigenschaft "innerHTML" nur vom IE unterstützt. Nun meine Frage: Gibt es im DOM eine Möglichkeit, auf ganze Knoten einschließlich aller Child-Knoten zuzugreifen?
Danke, Jürgen
Hi,
Nun meine Frage: Gibt es im DOM eine Möglichkeit, auf ganze Knoten einschließlich aller Child-Knoten zuzugreifen?
Indem Du einfach auf diesen Knoten zugreifst. Seine Kinder werden mitkopiert - es sind ja seine Kinder.
Viele Grüße,
Martin
PS: Gibt es auch _halbe_ Knoten?
Hallo,
Nun meine Frage: Gibt es im DOM eine Möglichkeit, auf ganze Knoten einschließlich aller Child-Knoten zuzugreifen?
Indem Du einfach auf diesen Knoten zugreifst. Seine Kinder werden mitkopiert - es sind ja seine Kinder.
Tja, leider liefert
document.getElementsByTagName("span")[1] = document.getElementsByTagName("span")[0] ;
die Fehlermeldung "Das Objekt unterstützt diese Eigenschaft oder Methode nicht".
Gruß, Jürgen
Hallo,
ich möchte innerhalb einer Seite einen Knoten einschließlich seiner Child-Knoten (Text, Kursiver Text, fetter Text, Zeilenumbruch) an eine andere Stelle kopieren. Hierzu benutze ich "document.getElementsByTagName("span")[i].innerHTML". Leider wird die Eigenschaft "innerHTML" nur vom IE unterstützt. Nun meine Frage: Gibt es im DOM eine Möglichkeit, auf ganze Knoten einschließlich aller Child-Knoten zuzugreifen?
Ist recht umständlich, weil du, wenn du was austauschen willst, immer ein Element bilden mußt:
a= document.createElement("table");
b=document.createElement("tr");
c=document.createElement("td");
Dann das ganze an den Elementenbaum anhängen:
iii =document.getElementById("dasda");
dasda.appendChild(a);
dasda.appendChild(b);
dasda.appendChild(b);
Und dann hast du noch nicht mal Text in der Tabelle. Den mußt du wieder auf dieselbe Weise anfügen.
Nimm doch innerHTML, das ist generell DOM-kompatibel.
Ciao
W. Pichler
Hallo,
ich möchte innerhalb einer Seite einen Knoten einschließlich seiner Child-Knoten (Text, Kursiver Text, fetter Text, Zeilenumbruch) an eine andere Stelle kopieren. Hierzu benutze ich "document.getElementsByTagName("span")[i].innerHTML". Leider wird die Eigenschaft "innerHTML" nur vom IE unterstützt. Nun meine Frage: Gibt es im DOM eine Möglichkeit, auf ganze Knoten einschließlich aller Child-Knoten zuzugreifen?
Das Klonen von Knoten funktioniert in IE und Mozilla (wobei auch Mozilla innerHTML kennt):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 03/02</title>
<meta name="Author" content="Dr. Thomas Meinike - thomas@handmadecode.de">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
<!--
function Klonen()
{
var neu, clone;
clone=document.getElementsByTagName("span")[0]; // zu klonendes span-Element
neu=document.createElement("span"); // neues span-Element erstellen
document.getElementsByTagName("body")[0].appendChild(neu); // neues span-Element nach body einhaengen
clone=clone.childNodes[0].cloneNode(clone); // Inhalt unter zu klonendem span-Element lesen
neu.appendChild(clone); // diesen Inhalt unterhalb des neuen span-Elements einfuegen
}
//-->
</script>
</head>
<body>
<form action="">
<input type="button" value="Test" onclick="Klonen()">
</form>
<span><strong>Text<br></strong></span>
</body>
</html>
MfG, Thomas
Hallo Thomas,
vielen Dank für Deine ausführliche Antwort.
Übrigens, mit
function Replace()
{
var tmp ;
tmp = document.getElementsByTagName("span")[0] ;
tmp = tmp.childNodes[0].cloneNode(tmp);
document.getElementsByTagName("span")[1].replaceChild(tmp,document.getElementsByTagName("span")[1].firstChild) ;
}
kann man den Inhalt eines Knotens durch den eines anderen ersetzen.
Gruß, Jürgen