Hallo,
Hier einmal meine Version deiner Funktion:
Danke, danke...
Meine obligatorische ;-) kleine Krittelei:
var Foo = { // Ein Objekt mit dem passend zur ID aufzurufenden Funktionsnamen
'htm' : 'anpassen', // ID „htm“ → anpassen();
'full' : 'normalwidth' // ID „full“ → normalwidth();
}
Hier würde ich nicht mit den Funktionsnamen arbeiten, sondern direkt mit Referenzen auf die Funktionen, also:
var modus_funktionen = {
'htm' : anpassen,
'full' : normalwidth
};
if (html.id && obj) {
for (i in Foo) { // Das Objekt „Foo“ mit einer Schleife durchlaufen
Das Durchlaufen ist eigentlich nicht nötig.
Über die Klammer-Notation kann man anhand von html.id auf den entsprechenden String zugreifen, der im Object gespeichert ist.
modus_funktionen[html.id] gibt schon die gesuchte Funktion zurück (oder in deiner Version den Funktionsnamen).
/* Wenn die ID des Wurzelelements mit dem Namen der Eigenschaft des
aktuellen Schleifendurchlaufes übereinstimmt …*/
if (html.id == i) {
if (modus_funktionen[html.id]) {
(Falls die Existenz denn noch zur Sicherheit überprüft werden muss, ansonsten fiele diese Abfrage mit der for-in-Schleife weg.)
/* Die an das window-Objekt gekoppelte Funktion aufrufen, deren
Name mit dem Wert der Eigenschaft des aktuellen Schleifen-
durchlaufes übereinstimmt */
windowFoo[i]; // Z. B.: window'anpassen';
Wenn man nicht über den Funktionsnamen geht, reicht dann:
modus_funktionenhtml.id;
zum Aufrufen.
Mathias