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.
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 + "()");
Erstellen Sie eine name -> function
-Karte:
var funcs = {
'one': setOne,
'two': setTwo
/*...*/
};
Dann rufen Sie die Funktion mit auf:
funcs[number]();
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');
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
So einfach ist das:
function hello(){
alert("hello");
}
var str = "hello";
eval(str+"()");
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