Funktionsaufruf per Variable
Wayne
- javascript
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
Hallo,
mit eval() klappt's schonmal:
<body onload="function FunkB(){alert();},function FunktionA(FB){eval(FB)}FunktionA('FunkB()');">
</body>
Grüsse
Cyx23
Hallo,
inzwischen gibt es dazu noch ein Posting mit ähnlichem Thema:
http://www.teamone.de/selfaktuell/forum/?m=145112&t=27842
Grüße
CurtB
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