molily: if-operatoren...bräuchte Hilfe

Beitrag lesen

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