2009-08-03 12 views
2

Ich habe eine Funktion, die für einige Validierungen, das Deaktivieren und die Aktivierung einiger Textfelder und einer Gruppe von Optionsfeldern zuständig ist.Wie füge ich eine Nummer an einen Funktionsnamen an, um viele Funktionen zu erstellen?

jetzt möchte ich den Funktionsnamen generieren, der von einer anderen Funktion aufgerufen werden soll for-Schleife und dann die für Schleifenindex für die Funktion in Frage anhängen ....

so etwas wie dieses .....

hier möchte ich den Index i auf den makeChoice_ang() anhängen Funktion ....

ausprobiert viele Möglichkeiten .... aber nicht gehen ...

Ich habe versucht mit diesem .... 'makeChoice_ang' + i;

aber das macht es zu einem String ....

Bitte helfen Sie mir oder zumindest zeigen Sie mir in die richtige Richtung ....

Dank einer Million im Voraus !!

Antwort

5

ich bin, diese als eine andere Antwort, weil, na ja, ist es anders!

Wenn Sie eine globale Funktion (oder jede Funktion, die Sie den Umfang der wissen) gegeben nennen wollen ein Suffix so, dann könnte man nur Array-Notation:

window['makeChoice_ang' + i](); 

Erinnern ... eval böse mostly

+0

Danke ein Haufen Nick .... arbeitete wie ein Charme ... Danke an alle anderen auch ... ich konnte Arrays nicht verwenden, deshalb war ich in diesem Fix ... ich hätte das erwähnen sollen ... Vielen Dank, um den Überlauf zu stapeln – chinmay

1

Wenn ich es richtig verstehe, was Sie zu tun versuchen:

eval('makeChoice_ang'+i+'()'); 

Dies wird die Funktion durch diesen String-Verkettung erstellt nennen. Wenn i = 5, dann würde es makeChoice_ang5() anrufen.

3

Es scheint, als wäre es einfacher, makeChoice_ang() als generische Funktion, die einen Index als Parameter akzeptiert. Wenn Sie die Funktion nicht ändern können oder wenn das Verhalten von Funktion zu Funktion stark variiert, können Sie alternativ eval() verwenden, um Ihre Zeichenfolge zu bewerten.

0

In Javascript werden Funktionen wie normale Variablen behandelt, genau wie eine Zeichenfolge oder ein int. Natürlich haben sie einige zusätzliche Funktionen, aber Sie können sie auf die gleiche Weise verwenden, zum Beispiel können Sie eine Reihe von Funktionen in einem Array speichern oder eine Funktion an eine andere Funktion übergeben. Angesichts dessen kann ich keine Notwendigkeit erkennen, Funktionen so zu benennen, wie es aussieht.

Ich wünschte, ich könnte Ihnen mehr Hilfe für Ihr spezifisches Problem geben, aber es ist ein wenig schwer zu verstehen, sorry.

Sie könnten versuchen, Ihre unCheckRadio Funktion zu ändern, so dass sie eine Funktion als Parameter übernehmen:

function unCheckRadio(num, func) { ... } 

und dann würden Sie es wie folgt nennen:

function unCheckRadio(5, function() { 
    // do whatever here. 
}); 
2

ein Objekt abgeben zu setzen deine Funktionen in. Machen Sie eine Methode in diesem Objekt für jede 'makeChoice_ang' + i-Funktion. Sie können diese Funktionen dann über dieses Objekt aufrufen.

var f = { 
    makeChoice_ang1: function(){ 
     alert('1'); 
    }, 
    makeChoice_ang2: function(){ 
     alert('2'); 
    } 
} 

for(var i = 1; i < 3;i++) 
    f['makeChoice_ang' + i](); 
+0

ein Array wäre wahrscheinlich einfacher – nickf

+0

ja, ich erkannte, dass, nachdem ich die anderen Antworten gelesen habe. Der Vorteil hier ist (wenn es sogar ein Vorteil ist), Sie haben Namen für die Funktionen. – Michael

Verwandte Themen