Schorsch: Dom Klettereien: Absturz! range.startContainer

Beitrag lesen

Guten Tag

Ich möchte den Node, indem sich selektierter Text befindet, verändern.
Mittels "range.startContainer" versuche ich darauf zuzugreifen, kann aber anschliessend die setAttribute() Methode nicht verwednen.

Warum?

Danke im Voraus
Schorsch

NB: Das ganze muss nur im Firefox klappen.

Was bisher geschah:

// Habe ein Range
 var range = window.getSelection().getRangeAt(0);
 // Jetzt habe ich den Parent Node vom Range oder??
 var container = range.startContainer;
 // Nun möchte ich diesen verändern:
 /* Funktioniert nicht! Warum??? */
 //container.setAttribute("align", "center");

/* Working Around */
 // Mache ein neuer Node
 var newNode = document.createElement("div");
 // Mit der ID blah
 newNode.setAttribute("id", "blah");
 // Packe diesen Node exakt um meinen Range herum
 newNode.appendChild(range.extractContents());
 range.insertNode(newNode);
 // Hole mein blah
 var blah = document.getElementById("blah");
 // Und gehe nun zu seinen Eltern,
 // Welche dieselben wie container sein müssten oder?!?
 var eltern = blah.parentNode;
 // Jetzt kann ich die eltern bearbeiten...
 eltern.setAttribute("align", "center");
 // Weiter hole ich den Inhalt von blah,
 // Hänge diesen als Textnode den Eltern an
 // Und lösche blah ...