Wayne: Funktionsaufruf per Variable

Hallo zusammen,

ich moechte in einer Javascript-Funktion A eine andere Funktion B aufrufen, welche
ich als Parameter uebergeben habe, also quasi als
function FunktionA (FunktionsnameB)
{
  bla
  bla

FunktionsnameB;
}

Die Ausgabe des FunktionsnamensB zeigt mir die korrekte Bezeichnung an, beispielsweise
ueber alert(FunktionsnameB); erhalte ich FunktionB(42) als Ausgabe.
Leider wird die Funktion nicht ausgefuehrt ... Hatte bereits den Verdacht, dass
die Uebergabe von Funktionen (oder vielleicht Zeigern auf Funktionen) unter
Javascript besondere Anforderungen stellt, konnte aber keine Infos finden.

Fuer Hilfe immer dankbar,
Wayne

  1. Hallo,

    mit eval() klappt's schonmal:

    <body onload="function FunkB(){alert();},function FunktionA(FB){eval(FB)}FunktionA('FunkB()');">
    </body>

    Grüsse

    Cyx23

    1. Hallo,

      inzwischen gibt es dazu noch ein Posting mit ähnlichem Thema:

      http://www.teamone.de/selfaktuell/forum/?m=145112&t=27842

      Grüße
      CurtB

  2. Moin!

    ich moechte in einer Javascript-Funktion A eine andere Funktion B aufrufen, welche
    ich als Parameter uebergeben habe, also quasi als
    function FunktionA (FunktionsnameB)
    {
      bla
      bla
      FunktionsnameB;
    }
    Die Ausgabe des FunktionsnamensB zeigt mir die korrekte Bezeichnung an, beispielsweise
    ueber alert(FunktionsnameB); erhalte ich FunktionB(42) als Ausgabe.

    Was genau uebergibst Du als Parameter an die FunktionA? Uebergibst Du einen String, der den Funktionsaufruf enthaelt, also JS-Code, der ausgefuehrt werden soll? Oder uebergibst Du eine Funktionsreferenz? Wenn Du "Funktion(42)" als Ausgabe erhaelst, dann offenbar ersteres, nach der Benennung des Parameters zu urteilen (FunktionsnameB) jedoch letzteres.

    Jedenfalls musst Du im ersten Fall den uebergebenen JS-Code eben einfach ausfuehren, das geht mit
      eval(FunktionsnameB);
    im zweiten Fall musst Du die Funktion, auf die Du eine Referenz erhalten hast, eben aufrufen:
      FunktionsnameB();

    In jedem Fall hat es keinen Sinn, einfach
      FunktionsnameB;
    hinzuschreiben, denn dann steht da eben einfach ein Variablenname, mit dem nichts gemacht werden soll.

    So long