Appel dynamique de fonction

[Résolu]
Signaler
Messages postés
16
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
20 juin 2012
-
Messages postés
16
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
20 juin 2012
-
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

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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
Messages postés
16
Date d'inscription
mardi 20 avril 2010
Statut
Membre
Dernière intervention
20 juin 2012

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.