Appel dynamique de fonction

Résolu
squonk14
Messages postés
16
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
20 juin 2012
- 15 avril 2011 à 11:11
squonk14
Messages postés
16
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
20 juin 2012
- 15 avril 2011 à 11:41
Bonjour,

j'ai une question toute bête.
Je voudrais simplifier un code dans lequel j'ai des fonctions qui se ressemblent.
Si on resume à l'essentiel, ça donne un truc comme ça :

<html>
<head>
<title>Sans titre</title>
<script>

function test_un(annee, mois){
   alert("Je suis dans test un\n"+annee+"\n"+mois);
}

function test_deux(annee, mois){
   alert("Je suis dans test deux\n"+annee+"\n"+mois);
}

function test_trois(annee, mois){
   alert("Je suis dans test trois\n"+annee+"\n"+mois);
}

function appel(cas, annee, mois){
   if (cas=="un") test_un(annee, mois);
   if (cas=="deux") test_deux(annee, mois);
   if (cas=="trois") test_trois(annee, mois);
}

</script>
</head>








</html>


Bon c'est vraiment résumé hein ! Le code fait 1800 lignes et le html 3000.
Mais l'essentiel de mon problème est là : je voudrais trouvé un moyen dynamique pour appeler les fonctions test_xxx à partir du paramètre "cas".

J'ai pensé à ça :

function appel(cas, annee, mois){
   setTimeout("test_"+cas+"("+annee+","+mois+")",1);
}


Malheureusement, ça convertit la valeur de mois (égale à "04") en numérique, donc 4. Et ça c'est pas bon.

Quelqu'un aurait-il une idée ?

-------------------------------------------------------------
Il ne suffit pas d'être inutile. Encore faut-il être odieux.

2 réponses

cs_jopop
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
15 avril 2011 à 11:22
Salut,

pour ton problème de "04" as-tu tenté de passer par une variable intermédiaire pour forcer le bon cast, du genre :
var month = "" + mois;

(à tester, je sais pas si ça fonctionne)

Sinon la commande JS pour interpréter du code sous forme de chaîne de caractères est eval(), ex. :
eval("alert('msg')");


Bon code
3
squonk14
Messages postés
16
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
20 juin 2012

15 avril 2011 à 11:41
Ah ah ah !!
Bien joué mon pote !!
Désolé je m'emporte.
Merci pour ta rapidité et ta pertinence.
En fait ça donne un truc comme ça.
function appel(cas, annee, mois){
   eval("test_"+cas+"('"+annee+"','"+mois+"')");
}


Encore merci de m'avoir aidé.

-------------------------------------------------------------
Il ne suffit pas d'être inutile. Encore faut-il être odieux.
0