fonction en param d'une autre fonction : possible ? [JS] - HTML/CSS - Programmation
Marsh Posté le 09-06-2002 à 22:29:47
youdontcare a écrit a écrit : non. |
Comment faire alors ?
Caractères d'échappement ?... Je sais pas... T'as la solution ?
Marsh Posté le 09-06-2002 à 22:32:08
function email_famille()
{
... le code
}
function verif_mail(fn)
{
fn(); // éxécute la fonction donnée en paramètre
}
verif_mail(email_famille);
Marsh Posté le 09-06-2002 à 22:39:12
youdontcare a écrit a écrit : function email_famille() { ... le code } function verif_mail(fn) { fn(); // éxécute la fonction donnée en paramètre } verif_mail(email_famille); |
Au premier coup d'oeil je pige pas...
Au deuxieme je pige toujours pas...
Je persévers ...
Marsh Posté le 09-06-2002 à 22:41:49
d'apres ce que je comprends de cette solution, je peux pas donner les parametres a ma fonctions interne en meme temps que ma fonction globale.... ??? non ?
Marsh Posté le 09-06-2002 à 23:02:00
et si tu décrivais ce que tu veux faire plutôt que vouloir absolument passer par une fonction ? j'ai l'impression que tu te compliques la vie ...
Marsh Posté le 09-06-2002 à 23:09:57
OK !
Bon, j'ai un formulaire et des fonctions qui marchent :
une fonction qui verifie les mail
une fonction qui verifie que les champs sont numériques
une fonction qui verifie que le champ est remplie
....
Ces fonctions fonctionnant séparéement fonctionnent. Elles retourne true ou false (et pas de message d'erreur )
J'aurais voulu créer une fonction général qui prend en param les fonctions précedentent...
Si elles renvoient toutes true, je poste mon form mais si une renvoie false, je renvoie un message d'erreur associé a la fonction qui a renvoyé false...
Donc j'avais penser que ma fonction général prendrai les parametres par paire : une fonction qu'elle évalue et son message d'erreur associé...
Si tu as un moyen plus simple qui me permet d'utiliser mes premieres fonctions , je suis preneur...
Marsh Posté le 09-06-2002 à 23:11:45
jultey a écrit a écrit : OK ! Bon, j'ai un formulaire et des fonctions qui marchent : une fonction qui verifie les mail une fonction qui verifie que les champs sont numériques une fonction qui verifie que le champ est remplie .... Ces fonctions fonctionnant séparéement fonctionnent. Elles retourne true ou false (et pas de message d'erreur ) J'aurais voulu créer une fonction général qui prend en param les fonctions précedentent... Si elles renvoient toutes true, je poste mon form mais si une renvoie false, je renvoie un message d'erreur associé a la fonction qui a renvoyé false... Donc j'avais penser que ma fonction général prendrai les parametres par paire : une fonction qu'elle évalue et son message d'erreur associé... Si tu as un moyen plus simple qui me permet d'utiliser mes premieres fonctions , je suis preneur... |
je viens de me relire et mes fautes de grammaire me font peur !!! désolé !!!
Marsh Posté le 09-06-2002 à 23:18:44
jultey a écrit a écrit : Ces fonctions fonctionnant séparéement fonctionnent. |
je lisais justement http://fr.news.yahoo.com/020607/108/2mdii.html
Marsh Posté le 09-06-2002 à 23:22:05
youdontcare a écrit a écrit : je lisais justement http://fr.news.yahoo.com/020607/108/2mdii.html |
ca vaut pas les perles du bac
Marsh Posté le 09-06-2002 à 23:26:51
dans ton cas, ça m'a l'air mieux de passer par eval(), qui évalue la string qu'on lui passe. eval("alert('hello'" ) est équivalent à alert('hello';.
tu peux donc faire un tableaux d'appels :
var checkForm = array("verif_mail('email_famille', 'email_mere'"
"verif_numeric('champ1'" );
un tableau d'erreurs :
var checkFormErrors = array("erreur dans les mails", "erreur numérique" );
tu passes ces tableaux à ta fonction envoyer :
envoyer(checkForm, checkFormErrors);
envoyer évalue toutes les fonctions du tableau et renvoie le message associé si une des fonctions foire :
function envoyer(fns, fnerrors)
{
for (i=0; i<fns.length; i++)
{
eval("var resultat = " + fns[i]);
if (resultat != true) return fnerrors[i];
}
return true;
}
par exemple. je trouve ça un peu crade, mais je vois pas bien comment faire mieux pr le moment ...
Marsh Posté le 09-06-2002 à 23:32:45
youdontcare a écrit a écrit : tu peux donc faire un tableaux d'appels : var checkForm = array("verif_mail('email_famille', 'email_mere'" "verif_numeric('champ1'" ); un tableau d'erreurs : var checkFormErrors = array("erreur dans les mails", "erreur numérique" ); |
ces 2 tableaux, faut donc que je les déclare hors de ma fonction générale ... Entre les balises scripts ? Juste comme ca donc ?!
Marsh Posté le 09-06-2002 à 23:34:58
errata : majuscule a Array ...
sinon tu peux faire un tableau par fonction, qui contient le nom de la fonction, ses arguments, son code d'erreur :
var verif_mail = Array('verif_mail', Array('email_famille', 'email_mere', 'erreur dans les mails);
... regrouper ces tableau dans un autre tableau et le passer à envoyer qui construit l'appel à la fonction dans une string et le passe à eval().
Marsh Posté le 09-06-2002 à 23:35:57
jultey a écrit a écrit : ces 2 tableaux, faut donc que je les déclare hors de ma fonction générale ... Entre les balises scripts ? Juste comme ca donc ?! |
si tu veux les rendre globaux, oui. si une fonction se charge de faire la manip, tu peux les déclarer dans la fonction.
Marsh Posté le 09-06-2002 à 23:39:27
Merci pour tout le mal que tu t'es donné pour m'expliquer. Je crois que ça a fait effet... Je vais essayer de mettre tout ca en application maintenant !
Marsh Posté le 11-06-2002 à 00:59:47
Ben voila, je crois que j'y suis arrivé !
//tableau a remplir |
Marsh Posté le 09-06-2002 à 20:22:34
Re salut
Encore un ptit PB de javascript...
Voila, j'ai ma fonction verif_mail() qui fonctionne bien. Elle prend en paramettre des champs et si ils sont pas des emails les efface et retourne false...
Je voudrais créer une fonction envoyer() qui prendrait en paramettres des fonctions et leur message d'erreur...
Genre envoyer(fonction1, fonction1_error, fonction2, fonction2_error...)
fonction1, fonction2 seraient donc des fonctions mais donc faudrait passer en paramettre de la fonction envoyer() une autre fonction... Je sens que je suis pas clair... alors voila concretement ce que ca donne dans mon code :
onClick="envoyer('verif_mail('email_famille', 'email_mere', 'email_pere'', 'erreur dans les mails'">
Alors ma question est : est ce qu'on peut passer une fonction en parametre d'une autre fonction car là, j'y arrive po !!
Merci pour vos réponses