Replace
Marco
- javascript
0 Antje Hofmann0 Marco
0 Stefan
Hallo zusammen
mit folgendem Script setze ich einen "span" Tag um den markierten Textbereich. Das erste Mal funktioniert das auch. Jedoch beim zweiten mal sollte es den alten "Span" Tag löschen und den neuen hinschreiben.
Wie kann ich das lösen? Hat mit da jemand einen Tipp?
Gruss Marco
function CSS(nr){
var sel = Bereich1.document.selection.createRange().text;
var res = "<span class='Titel1'>"+sel+"</span>";
sel = "/" + sel + "/";
Bereich1.document.getElementById("message").outerHTML= Bereich1.document.getElementById("message").outerHTML.replace(eval(sel), res);
}
Hallo Marco
mit folgendem Script setze ich einen "span" Tag um den markierten Textbereich. Das erste Mal funktioniert das auch. Jedoch beim zweiten mal sollte es den alten "Span" Tag löschen und den neuen hinschreiben.
Wie kann ich das lösen? Hat mit da jemand einen Tipp?
Das Löschen alter Elemente ist schwierig, da Markierungen meist sehr ungenau sind.
Beste Lösung: Frage die Klickposition und das an dieser Stelle existierende Element ab. Von diesem Element kannst du dann entweder die CSS-Eigenschaft ändern oder das Element entfernen.
Viele Grüße
Antje
Hallo Marco
mit folgendem Script setze ich einen "span" Tag um den markierten Textbereich. Das erste Mal funktioniert das auch. Jedoch beim zweiten mal sollte es den alten "Span" Tag löschen und den neuen hinschreiben.
Wie kann ich das lösen? Hat mit da jemand einen Tipp?
Das Löschen alter Elemente ist schwierig, da Markierungen meist sehr ungenau sind.
Beste Lösung: Frage die Klickposition und das an dieser Stelle existierende Element ab. Von diesem Element kannst du dann entweder die CSS-Eigenschaft ändern oder das Element entfernen.
Viele Grüße
Antje
hmm...kannst du mir noch was genauers sagen?
Marco
Hallo Marco
hmm...kannst du mir noch was genauers sagen?
überwache den Klickevent
speichere die Position:
posX=deinbereich.event.clientX;
posY=deinbereich.event.clientY;
und hier hast du das Element, das unter dem Klickpunkt liegt:
var element=deinbereich.elementFromPoint(posX,posY);
Mehr dazu in der MS-Doku: Stichwort textrange
Viele Grüße
Antje
Deine Darstellung ist etwas oberflächlich und wenig aussagekräftig. Zum Thema Tags löschen und neu erstellen hier eine kleine einfache Hilfestellung.
Gib Deinem Span Tag eine ID (Bsp."ibM"). Anschliesend rufst Du den Span Tag mit unten aufgeführten Befehl auf und setzt die Attribute neu. Das hat in etwa die gleiche Wirkung wie löschen und neu machen.
document.getElementById("ibM").setAttribute("class","Titel2");
Mit setAttribute kannst Du alle Attribute ändern.
Mail mich an für weitere Fragen.
Stefan
HGallo Stefan
Deine Darstellung ist etwas oberflächlich und wenig aussagekräftig. Zum Thema Tags löschen und neu erstellen hier eine kleine einfache Hilfestellung.
nein, mir war sie völlig klar. Marco spielt mit dem contenteditable-Modus im IE.
Gib Deinem Span Tag eine ID (Bsp."ibM"). Anschliesend rufst Du den Span Tag mit unten aufgeführten Befehl auf und setzt die Attribute neu. Das hat in etwa die gleiche Wirkung wie löschen und neu machen.
Ganz so einfach ist es nicht. Marcus hat die Unberechenbarkeit eines Redakteurs oder ähnlichee Personen zu berücksichtigen (Erfahrungswert: da wurde sich beschwert, dass ein solcher Editor keine kompletten Word-Funktionalitäten bietet)
document.getElementById("ibM").setAttribute("class","Titel2");
Mit setAttribute kannst Du alle Attribute ändern.
das Problem ist, im Normalfall macht es keinen Sinn mit IDs zu arbeiten. Hier braucht man das Element selbst und genau das ist Marcos Problem, da der Text zur Laufzeit generiert wird und ich ständig ändern kann.
Viele Grüße
Antje