Tag löschen - aber nicht Inhalt
ToBiOh
- javascript
Hallo JSler,
habe bereits länger nach einer Methode gesucht, um mit JS einen Tag zu löschen, aber nicht den Inhalt des Tags.
Ziel:
Innerhalb verschiedener unbennanten Elementen habe ich ein bestimmtes Element (hier) z.B. <blockquote>..</blockquote> nun möchte ich einfach das Element Blockquote entfernen - der Inhalt von Blockquote soll aber an gleicher Stelle erhalten bleiben.
Lösungsansätze von meiner Seite:
Wie folgt habe ich Blockquote durch ein einfaches leeres Span ersetzt. Das ist zwar nicht was wirklich was mein Ziel war funktioniert aber auch.
elementselectedcont = (z.B. das Blockquote);
selectedorigintext = document.createElement('span');
elementselectedcont.parentNode.insertBefore(selectedorigintext, elementselectedcont);
selectedorigintext.innerHTML = elementselectedcont.innerHTML;
elementselectedcont.parentNode.removeChild(elementselectedcont);
Problem(e):
Man kann kein HTML vor einem Element einfügen. (?) Nur ein anderen Element (wie oben mit insertBefore).
vielleicht weiß ja jemand von Euch Rat?
grüße Tobias
Grüße,
würde die function http://de.selfhtml.org/javascript/objekte/all.htm#insert_adjacent_html@title=insertAdjacentHTML helfen?
MFG
bleicher
Theoretisch ja aber ist leider nicht Cross-Browser kompatibel :(
Trotzdem vielen Dank!
Hallo,
anscheinend kennst du nur Elementknoten, aber keine Textknoten. Der Text im blockquote-Element ist aus DOM-Sicht einfach ein Knoten, den du genauso aus- und einhängen kannst, wie du es mit Elementen tust.
Eine einfache Lösung wäre: Du durchläufst mit einer Schleife alle Kindknoten (childNodes) von blockquote, hängst jedes aus (removeChild) und hängst es vor dem blockquote wieder ein (insertBefore). Schließlich löscht du den (dann leeren) blockquote-Elementknoten (removeChild).
Mathias
Stimmt danke! Hatte an diese Möglichkeit nicht gedacht, da ich vorher einmal das Problem hatte, dass ich ein Element brauchte das selektiert werden sollte und man kann ja nicht jedes Element einzeln selektieren lassen sondern braucht da dann ein Element und um alle Unterelemente eines Elements zu einem Element zusammenzufassen gibt es ja bisher keine Cross-Browser kompatible Lösung...
Naja soviel dazu. Hier wie ich das Problem jetzt gelöst habe:
elementselectedcont = wordxb.getContaining();
elementselectedar = elementselectedcont.childNodes;
elementselectedcont.id = 'wxdeletelement';
for (elementnum = 0; elementnum < elementselectedar.length; elementnum++) {
elementnum2 = 0;
while (elementselectedar[elementnum] != null) {
elementselectedcont.parentNode.insertBefore(elementselectedar[elementnum], elementselectedcont);
if (typeof(elementselectedar[elementnum]) != 'undefined') {
elementselectedar[elementnum] = elementselectedar[elementnum][elementnum2];
}
}
}
Vielen Dank für deine Hilfe! :)
Hi,
Eine einfache Lösung wäre: Du durchläufst mit einer Schleife alle Kindknoten (childNodes) von blockquote, hängst jedes aus (removeChild) und hängst es vor dem blockquote wieder ein (insertBefore).
Das "aushängen" ist überflüssig - du kannst mittels insertBefore/appendChild einen Knoten auch direkt "umhängen".
MfG ChrisB