Page 1 sur 2
Fonction d'évaluation
Posté : 20 déc. 2006, 18:13
par Sebe
Salut,
Encore un soucis pour moi aujourd'hui !
Je désire créer une fonction JavaScript qui me retourne une appréciation sur la récupération après un effort. Cette apprèciation utilisera 2 données:
<input name="fcp3" type="text" id="fcp3" value="0" size="3" maxlength="3" onblur="verifFc(this);" />
et
<input name="fcrecup" type="text" id="fcrecup" value="0" size="3" maxlength="3" onblur="verifFc(this); evalRecup(this);" />
Si pour la fonction 'verifFc' cela ne pose pas de problème, il n'en va pas de même pour la fonction 'evalRecup' car j'ai déjà un problème pour le 2e alert qui ne me renvoit rien !
// **************************** Fonction test des champs FC ****************************
function verifFc(chpFc) {
var fcTab = chpFc;
var fc = Number(chpFc.value);
// alert (fc);
if(fc < 20 || fc > 220){
alert('La FC doit être comprise dans des limites raisonnables !');
chpFc.value = '0';
chpFc.focus();
return(false);
}
}
// **************************** Fin de la fonction test des champs FC ****************************
// **************************** Fonction d'évaluation de la récupération ****************************
// ne fonctionne pas !
function evalRecup(fcrecup, fcp3){
var fcR = Number(fcrecup.value);
alert("La FC après 5 minutes de récupération est de " + fcR);
var fcM = Number(fcp3.value);
alert("La FC du palier 3 est de " + fcM);
// if(fcrecup == 0 || fcp3 == 0) return(" "); //Pas de message d'erreur !
// if(fcrecup < (fcp3 * 0.5652)) return("Excellente");
// if(fcrecup < (fcp3 * 0.5815)) return("Très bonne");
// if(fcrecup < (fcp3 * 0.6033)) return("Bonne");
// if(fcrecup < (fcp3 * 0.6304)) return("Moyenne");
// if(fcrecup < (fcp3 * 0.663)) return("Médiocre");
// if(fcrecup < (fcp3 * 0.6902)) return("Mauvaise");
// return("Très mauvaise");
}
// **************************** Fin de la fonction d'évaluation de la récupération ****************************
Pour le reste (tous les '//'), ce sont des restes d'une fonction PHP !
Merci
Posté : 20 déc. 2006, 18:17
par Sebe
Stop, y'a des choses qui commence à entrer !
<input name="fcrecup" type="text" id="fcrecup" value="0" size="3" maxlength="3" onblur="verifFc(this); evalRecup(fcrecup, fcp3);" />
Merci
Posté : 20 déc. 2006, 18:21
par Ajoloca
Stop, y'a des choses qui commence à entrer !
<input name="fcrecup" type="text" id="fcrecup" value="0" size="3" maxlength="3" onblur="verifFc(this); evalRecup(fcrecup, fcp3);" />
Merci
Je doute que ça fonctionne.
Tu crois qu'a ce niveux il connait fcp3 ???
Posté : 20 déc. 2006, 18:27
par Sebe
Tu crois qu'a ce niveux il connait fcp3 ???
Oui, la valeur dans l'alert correspond !
Je doute que ça fonctionne.
Mais que tu doute bien ... je ne sais pas comment renvoyer la valeur
function evalRecup(fcrecup, fcp3){
var fcR = Number(fcrecup.value);
alert("La FC après 5 minutes de récupération est de " + fcR);
var fcM = Number(fcp3.value);
alert("La FC du palier 3 est de " + fcM);
if(fcR == 0 || fcp3 == 0) return(" "); //Pas de message d'erreur !
if(fcR < (fcM * 0.5652)) return("Excellente");
if(fcR < (fcM * 0.5815)) return("Très bonne");
if(fcR < (fcM * 0.6033)) return("Bonne");
if(fcR < (fcM * 0.6304)) return("Moyenne");
if(fcR < (fcM * 0.663)) return("Médiocre");
if(fcR < (fcM * 0.6902)) return("Mauvaise");
return("Très mauvaise");
}
Si tu as un tuyau ... Merci
Posté : 20 déc. 2006, 18:34
par Ajoloca
Posté : 20 déc. 2006, 18:45
par Sebe
J'ai fait la transformation dans le champs 'input' mais est-ce que je dois faire cela aussi dans la fonction ... cela fonctionne déjà !
Merci
Posté : 20 déc. 2006, 18:49
par Ajoloca
Logiquement non, car tu recupères dans ta fonction
pour tes calculs.
Posté : 20 déc. 2006, 20:35
par Sebe
Suis-je dans le bon pour faire mon test ?
function evalRecup(fcrecup, fcp3){
var fcR = Number(fcrecup.value);
alert("La FC après 5 minutes de récupération est de " + fcR);
var fcM = Number(fcp3.value);
alert("La FC du palier 3 est de " + fcM);
if ((fcrecup==0) || (fc3==0)) return 0;
switch (fcrecup)
{
case (fcM * 0.5652): return "Excellente";break;
case (fcM * 0.5815): return "Très bonne";break;
case (fcM * 0.6033): return "Bonne";break;
case (fcM * 0.6304): return "Moyenne";break;
case (fcM * 0.6902): return "Mauvaise";break;
default: return "Très mauvaise";break;
}
}
Merci
Je passe à côté de qqch !
Posté : 21 déc. 2006, 12:12
par Sebe
Salut,
Décidement, je ne trouve pas la solution ... je dois passer à coté de quelque chose car je n'ai même pas les alerts dans le 'switch' qui s'affiche:
function evalRecup(fcrecup, fcp3){
var fcR = Number(fcrecup.value);
alert("La FC après 5 minutes de récupération est de " + fcR);
var fcM = Number(fcp3.value);
alert("La FC du palier 3 est de " + fcM);
// if ((fcrecup==0) || (fc3==0)) return 0;
switch (fcR, fcM)
{
case (fcR < (fcM * 0.5652)): // recup = "Excellente";
alert ("Eval récup Excellente");
break;
case (fcR < (fcM * 0.5815)): // recup = "Très bonne";
alert ("Eval récup Très bonne");
break;
case (fcR < (fcM * 0.6033)): // recup = "Bonne";
alert ("Eval récup Bonne");
break;
case (fcR < (fcM * 0.6304)): // recup = "Moyenne";
alert ("Eval récup Moyenne");
break;
case (fcR < (fcM * 0.6902)): // recup = "Mauvaise";
alert ("Eval récup Mauvaise");
break;
default: // recup = "Très mauvaise";
alert ("Eval récup est impossible");
}
}
Comment est-ce possible ?
Merci
Re: Je passe à côté de qqch !
Posté : 21 déc. 2006, 12:54
par zeus
Salut,
Je ne pense pas que cette syntaxe soit très appréciée par le JS
switch (fcR, fcM)
Je sais que c'est une ancienne fonction PHP mais je ne suis pas sûr que le JS soit d'accord

Posté : 21 déc. 2006, 13:14
par Sebe
Salut,
Quel(s) conseille(s) me donnes-tu parce que je ne vois pas de porte de sortie ?
Merci
Posté : 21 déc. 2006, 13:18
par fgranjon
Et bien ne pourrais tu pas utilisé des if et else if ?
Posté : 21 déc. 2006, 14:15
par Sebe
Et bien ne pourrais tu pas utilisé des if et else if ?
Ok, c'est dans la boîte !
function evalRecup(fcrecup, fcp3){
var fcR = Number(fcrecup.value);
alert("La FC après 5 minutes de récupération est de " + fcR);
var fcM = Number(fcp3.value);
alert("La FC du palier 3 est de " + fcM);
// if ((fcrecup==0) || (fc3==0)) return 0;
if (fcR < (fcM * 0.5652)) alert ("Eval récup Excellente");
else if (fcR < (fcM * 0.5815)) alert ("Eval récup Très bonne")
else if (fcR < (fcM * 0.6033)) alert ("Eval récup Bonne")
else if (fcR < (fcM * 0.6304)) alert ("Eval récup Moyenne")
else if (fcR < (fcM * 0.6902)) alert ("Eval récup Mauvaise")
else alert ("Eval récup est impossible");
Pas d'autres problème avant que je ne devellope ?
Merci
Posté : 21 déc. 2006, 14:31
par fgranjon
Oublie pas les point virgule après tes alert
function evalRecup(fcrecup, fcp3){
var fcR = Number(fcrecup.value);
alert("La FC après 5 minutes de récupération est de " + fcR);
var fcM = Number(fcp3.value);
alert("La FC du palier 3 est de " + fcM);
// if ((fcrecup==0) || (fc3==0)) return 0;
if (fcR < (fcM * 0.5652))
alert ("Eval récup Excellente");
else if (fcR < (fcM * 0.5815))
alert ("Eval récup Très bonne");
else if (fcR < (fcM * 0.6033))
alert ("Eval récup Bonne");
else if (fcR < (fcM * 0.6304))
alert ("Eval récup Moyenne");
else if (fcR < (fcM * 0.6902))
alert ("Eval récup Mauvaise");
else
alert ("Eval récup est impossible");
Posté : 21 déc. 2006, 16:58
par Sebe
Voilà c'est dans la boîte ... merci pour les ';' que j'avais oublié !
Donc voici ma fonction:
// **************************** Fonction d'évaluation de la récupération ****************************
function evalRecup(fcrecup, fcp3){
var fcR = Number(fcrecup.value);
// alert("La FC après 5 minutes de récupération est de " + fcR);
var fcM = Number(fcp3.value);
// alert("La FC du palier 3 est de " + fcM);
var recup = " ";
if (fcR < (fcM * 0.5652)) {
recup = "Excellente";
//alert ("Eval récup Excellente");
document.forms.test.recup.readonly = false;
document.forms.test.recup.value = String( recup );
document.forms.test.recup.readonly = true;
}
else if (fcR < (fcM * 0.5815)) {
recup = "Très bonne";
//alert ("Eval récup Très bonne");
document.forms.test.recup.readonly = false;
document.forms.test.recup.value = String( recup );
document.forms.test.recup.readonly = true;
}
else if (fcR < (fcM * 0.6033)) {
recup = "Bonne";
//alert ("Eval récup Bonne");
document.forms.test.recup.readonly = false;
document.forms.test.recup.value = String( recup );
document.forms.test.recup.readonly = true;
}
else if (fcR < (fcM * 0.6304)) {
recup = "Moyenne";
//alert ("Eval récup Moyenne");
document.forms.test.recup.readonly = false;
document.forms.test.recup.value = String( recup );
document.forms.test.recup.readonly = true;
}
else if (fcR < (fcM * 0.6902)) {
recup = "Mauvaise";
//alert ("Eval récup Mauvaise");
document.forms.test.recup.readonly = false;
document.forms.test.recup.value = String( recup );
document.forms.test.recup.readonly = true;
}
else {
recup = "Très mauvaise";
//alert ("Eval récup est Très mauvaise");
document.forms.test.recup.readonly = false;
document.forms.test.recup.value = String( recup );
document.forms.test.recup.readonly = true;
}
//alert ("Recup est "+ recup);
}
// **************************** Fin de la fonction d'évaluation de la récupération ****************************
Vous ne voyez pas de problème pouvant en découler ?
Merci