Appel dynamique de fonction [Résolu]

squonk14 16 Messages postés mardi 20 avril 2010Date d'inscription 20 juin 2012 Dernière intervention - 15 avril 2011 à 11:11 - Dernière réponse : squonk14 16 Messages postés mardi 20 avril 2010Date d'inscription 20 juin 2012 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
cs_jopop 1540 Messages postés lundi 26 mai 2003Date d'inscription 1 août 2013 Dernière intervention - 15 avril 2011 à 11:22
3
Merci
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

Merci cs_jopop 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de cs_jopop
squonk14 16 Messages postés mardi 20 avril 2010Date d'inscription 20 juin 2012 Dernière intervention - 15 avril 2011 à 11:41
0
Merci
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.
Commenter la réponse de squonk14

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.