Objektzugriff über Variable...

tomate

Erfahrenes Mitglied
Hallo zusammen,

ich möchte "edit1" durch eine var ersetzen. Ich bekomme das aber einfach nicht hin.
Code:
edit1.document.execCommand(id, false, null);

Egal wie ich es schreibe, es kommt immer "document ist null oder kein Objekt".
Kann mir da jemand helfen...

Viele Grüße
tomate
 
was willst du damit machen? und, ich hab in selfhtml nach execcommand gesucht und aber nichts gefunden, vieleicht liegt der fehler darin

adi
 
"execCommand" ist in diesem Zusammenhang nicht von Bedeutung.
http://www.mozilla.org/editor/midas-spec.html
http://www.mozilla.org/editor/midasdemo/

Die Frage ist, weshalb ich einen Objektnamen nicht durch eine Var ersetzten kann.
Folgendes funktioniert:
Code:
document[bildname].src
und das ebend nicht:
Code:
[var]document.execCommand(id, false, null);
Wobei var z.B. für edit1 steht. Aber egal wie ich es schreibe, ich kann das objekt "edit1" einfach nicht durch eine Variable ersetzen. Ersetzen möchte ich den Objektnamen deshalb, weil ich "edit1.document.execCommand(id, false, null);" über eine Funktion aufrufe und diese ebend ja nach Formular das entsprechende Objekt ansprechen soll. Sonst müßte ich ja für jedes Objekt ein Funktion schreiben, oder die Geschichte über ein Switch lösen. Aber das wäre halt nicht sehr elegant...

Kann mir jemand helfen...?

Viele Grüße
tomate
 
ich habe nichts böses vor! Es handelt sich hier lediglich um einen WYSIWYG-Editor für eine kleine Adminseite. Weiter oben habe ich ja zwei Links eingefügt, welche den Befehl "execcommand" beschreiben. Damit kann man ebend z.B. eine Schrift formatieren (bold, underline usw...).

Für einen DOM Browser sieht der Zugriff so aus:
Code:
document.getElementById(wForm).contentWindow.document.execCommand(id, false, null);

Wobei "wForm" ein "div" mit "id=edit1" ist. In der Var "wForm" steht also nichts anderes als der String "edit1" drin. Aber für einen IE der DOM noch nicht blickt muß es ebend so lauten:
Code:
edit1.document.execCommand(id, false, null);

Hier kann ich "edit1" jedoch nicht durch eine Var ersetzen.

Und genau das ist mein Problem.

Viele Grüße
tomate
 
tomate hat gesagt.:
Aber für einen IE der DOM noch nicht blickt muß es ebend so lauten:
Code:
edit1.document.execCommand(id, false, null);

Das kannst du dir sparen..... ein IE, der DOM nicht blickt(also IE4 oder älter).... kann mit dem WYSIWYG ohnehin nix anfangen.... die von dir benutzte Technik kann der IE erst ab Version 5.5... und der kommt mit DOM klar.

Ahso... ich wollt dir natürlich nix Böses unterstellen:)... ich wollt nur sichergehen, dass es sich um ein window-Objekt handelt, denn nur diese haben ein Unterobjekt document.

Um die Frage trotzdenm zu beantworten... wie du dort eine Variable verwenden kannst:
Speichere nicht den Namen des <div>, sondern das window-Objekt in einer Variablen... dann sollte es gehen:

Code:
objWin=(document.all) ? window.edit1 : document.getElementById('edit1').contentWindow;
objWin.document.execCommand(......);
 
oh man, ich hab so ein Brett vor dem Kopf.
Die id gehört in diesem Fall zu einem iframe. Und von daher muß logischerweise ein window davor.
Ich dagegen bin wie bei einem div verfahren. Aber dessen Elternobjekt ist ja das "document".
Es geht jetzt -> Besten Dank für die Hilfe!

Viele Grüße
tomate
 
Zurück