2016-04-19 12 views
0

Hallo Leute, kann ich Wert als Funktionsname in JavaScript verwenden? Ich habe einige Funktionen mit dem gleichen Namen Eingabewerte wie:Wie benutze ich var Wert Name als Funktionsname in JavaScript

var ta = $('li.ramin.active').attr("id"); 
var act = $('input[name="'+ta+'_acceptdeny"]:checked').val(); 


act(Freq, meID); // my question is 

auf diese Weise i Fehler haben „Uncaught Typeerror: act ist keine Funktion“ Ja, ich weiß, Akt nicht eine Funktion ist, aber ich will var Akt verwenden Wert als Funktionsname !! also muss ich wissen, wie ich das machen kann? Dank an alle

+0

Was ist 'Freq' und' meID'? Das ist nicht klar, was genau Sie fragen –

+0

http://stackoverflow.com/questions/359788/how-to-execute-a-jacascript-function-when-i-have-its-name-as-a-string – izzy

+0

Du * kannst * das tun, aber du ** wahrscheinlich nicht **. Ich würde Ihnen raten, zu erklären, warum Sie das tun wollen und vielleicht eine Antwort für ein besseres Design bekommen. Außerdem könnten Sie davon profitieren, JavaScript genauer zu studieren, da es so aussieht, als ob Ihnen ein grundlegendes Verständnis fehlt (anhand der verwendeten Begriffe). – Amit

Antwort

0

Sie window[act](Freq, meId)

Dank können Justin Niessner für den Hinweis auf diese wird nur funktionieren, wenn act im globalen Bereich definiert ist. Sie könnten eval verwenden, dies wird jedoch im Allgemeinen als sehr unsicher angesehen.

+0

Das hängt davon ab, wie die Funktion definiert ist. Dies kann oder kann nicht funktionieren. –

+0

Danke, dass Sie gearbeitet haben – CHARLI

+0

@CHARLI, wenn dies für Sie arbeitete, bitte markieren Sie es als akzeptiert – slessans

0

Es gibt nichts, was man von Wieder erklärt Akt als eine Funktion zu stoppen, würden Sie verlieren nur alle Verweise auf das erklärte zunächst Akt vom Punkt an.

0

Statt den Wert als Funktionsnamen zu verwenden, legen Sie die Funktionen in ein Objekt, und verwenden Sie den Wert als Schlüssel für das Objekt.

var myFunctions = { 
    'func1': function() { .... }, 
    'func2': function() { .... }, 
    // and so on 
}; 

var ta = $('li.ramin.active').attr("id"); 
var act = $('input[name="'+ta+'_acceptdeny"]:checked').val(); 

myFunctions[act](Freq, meID); 

Das ist besser, weil Sie nicht aus Versehen eine Funktion aufrufen kann, die nicht von der Anwendung verwendet werden sollte, kann es nur Funktionen in der Objekt myFunctions nennen.

Verwandte Themen