J'ai plusieurs fonction jQuery comme
function setOne();
setTwo(); setThree();
et une variable var number
qui valorise respectivement "un", "deux", "trois".
Comment appeler la fonction "setOne ()" lorsque les valeurs numériques "un", la fonction "setTwo" lorsque les valeurs numériques "deux", etc.
Merci d'avance. Toute aide sera la bienvenue.
Si vous avez votre fonction dans la portée globale (sur l'objet window), vous pouvez faire:
// calls function setOne, setTwo, ... depending on number.
window["set" + number]();
Et utiliser eval
vous permettra d’exécuter des fonctions dans la portée locale:
eval("set" + number + "()");
Créez une carte name -> function
:
var funcs = {
'one': setOne,
'two': setTwo
/*...*/
};
Ensuite, vous appelez la fonction avec:
funcs[number]();
Si la variable détaille le nom réel de la fonction JQuery et que vous souhaitez l'appliquer à un élément DOM tel que 'body', vous pouvez procéder comme suit:
$('body')['function-name']('params');
Si vos fonctions sont dans la portée globale, essayez:
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
Aussi simple que cela est:
function hello(){
alert("hello");
}
var str = "hello";
eval(str+"()");
Pourquoi avez-vous trois fonctions pour cela?
var number;
function setNumber(n) {
number = n;
}
setNumber(1)
fixera le numéro à 1
setNumber(2)
définira le nombre à 2
ect