wake-up-neo.com

aufrufen einer in einer Variablen genannten jQuery-Funktion

Ich habe mehrere jQuery-Funktionen wie function setOne(); setTwo(); setThree();

und eine Variable var number, die jeweils "eins", "zwei", "drei" angibt.

Wie kann ich die Funktion "setOne ()" aufrufen, wenn Anzahl "Eins" ist, Funktion "SetTwo", wenn Zahl "Zwei" und so weiter ...

Vielen Dank im Voraus. Jede Hilfe wird geschätzt. 

18
bobighorus

Wenn Sie Ihre Funktion im globalen Bereich (für das Fensterobjekt) haben, können Sie Folgendes tun: 

// calls function setOne, setTwo, ... depending on number.
window["set" + number](); 

Mit eval können Sie Funktionen im lokalen Bereich ausführen:

eval("set" + number + "()");

Wann ist JavaScript eval()nicht böse?

37
andlrc

Erstellen Sie eine name -> function-Karte:

var funcs = {
    'one': setOne,
    'two': setTwo
    /*...*/
};

Dann rufen Sie die Funktion mit auf:

funcs[number]();
8
Felix Kling

Wenn die Variable den tatsächlichen Namen der JQuery-Funktion enthält und Sie die Funktion auf ein DOM-Element wie 'body' anwenden möchten, haben Sie folgende Möglichkeiten:

 $('body')['function-name']('params');
6
Jose Rodrigues

Wenn sich Ihre Funktionen im globalen Bereich befinden, versuchen Sie Folgendes:

function setOne() {
  console.log('setOne called');
}
function setTwo() {
  console.log('setTwo called');
}
function setThree() {
  console.log('setThree called');
}

var number, funcName;

number = 'one';
funcName = 'set' + number.charAt(0).toUpperCase() + number.slice(1);
window[funcName](); // output: setOne called

number = 'two';
funcName = 'set' + number.charAt(0).toUpperCase() + number.slice(1);
window[funcName](); // output: setTwo called

number = 'three';
funcName = 'set' + number.charAt(0).toUpperCase() + number.slice(1);
window[funcName](); // output: setThree called
2
Yoshi

So einfach ist das:

function hello(){
    alert("hello");
}
var str = "hello";
eval(str+"()");
1
I.G. Pascual

Warum haben Sie drei Funktionen dafür?

var number;
function setNumber(n) {
    number = n;
}

setNumber(1) setzt die Nummer auf 1

setNumber(2) setzt die Nummer auf 2

ect

0
OptimusCrime