Page 1 sur 1

Une petit aide dans le rassemblement de fonction

Posté : 26 janv. 2007, 12:58
par Sebe
Bonjour,

Je viens de me mettre dans l'idée de rassembler plusieurs fonctions (essentiellement de test) avant de rendre visible un bouton de soumission !
Voici coment je active la fonction en question:
<input name="submit" type="button" onClick="valid();" value="Evaluation" >
Dans certaines parties de la fonction qui suit, je fais en plus des calcules et renvoie des valeurs dans mon formulaire:

Code : Tout sélectionner

// **************************** Fonction 'Apparition d'un bouton de soumission' **************************** function valid(){ who = document.forms.test.iduser.value; //alert ("Id de l'utilisateur est " + who); fcrecup = document.forms.test.fcrecup.value; //alert ("La FC après récupération est " + fcrecup); recup = document.forms.test.recup.value; //alert ("Qualificatif de la récupération " + recup); dateserveur = document.forms.test.dateserveur.value.split("-"); //alert ("La date du serveur est " + dateserveur); serveur = dateserveur[2] +''+dateserveur[1]+''+dateserveur[0]; //alert ("La date du serveur " + serveur); datetest = document.forms.test.datetest.value.split("-"); //alert ("La date du test est " + datetest); test = datetest[2]+''+datetest[1]+''+datetest[0]; //alert ("La date du test " + test); fcp1 = document.forms.test.fcp1.value; //alert ("La FC du palier 1 est de " + fcp1); fcp3 = document.forms.test.fcp3.value; //alert ("La Fc au palier 3 est de " + fcp3); vitesse1 = document.forms.test.vitesse1.value; //alert ("La vitesse au palier 1 est " + vitesse1); vitesse2 = document.forms.test.vitesse2.value; //alert ("La vitesse au palier 2 est " + vitesse2); vitesse3 = document.forms.test.vitesse3.value; //alert ("La vitesse au palier 3 est " + vitesse3); vma = document.forms.test.vma.value; //alert ("La VMA est de " + vma); vo2max = document.forms.test.vo2max.value; //alert ("La V02max est de " + vo2max); pma = document.forms.test.pma.value; //alert ("La PMA est " + pma); if (test > serveur){ alert ("Le test ne peut s'être déroulé à une date qui n'a pas encore existé ! ! !"); document.forms.test.datetest.focus(); return(true); }else if (fcp3 < 20 || fcp3 > 220) { alert ("Vous n'avez pas introduit de valeur pour la FC au palier 3"); document.forms.test.fcp3.focus(); return; } else { fcM = fcp3; //alert ("La FCmax est de " + fcM); document.forms.test.fcmax.readonly = false; document.forms.test.fcmax.value = String( fcM ); document.forms.test.fcmax.readonly = true; } if ((vma <= 0) || (vo2max <= 0)) { alert ("Avez-vous entré le temps au Palier 3 ?"); document.forms.test.tempsp3.focus(); return; } if ((recup != "Excellente") && (recup != "Très bonne") && (recup != "Bonne") && (recup != "Moyenne") && (recup != "Mauvaise") && (recup != "Très mauvaise") || (fcrecup <= 0)){ alert ("Avez-vous entré votre FC après 5' de repos ?"); document.forms.test.fcrecup.focus(); return; } if ((vitesse3 != " ") && (vitesse2 != " ") && (vitesse1 != " ") && (vitesse3 > vitesse2) && (vitesse2 > vitesse1)) { alert ("La FC du palier 1 est de " + fcp1); alert ("La Fc au palier 3 est de " + fcp3); alert ("La vitesse au palier 1 est " + vitesse1); alert ("La vitesse au palier 2 est " + vitesse2); alert ("La vitesse au palier 3 est " + vitesse3); alert ("La PMA est " + pma); B30 = ((fcp3 - fcp1)/(vitesse3 - vitesse1)); alert ("B30 est de " + B30); B31 = (fcp3 - ((fcp3 - fcp1)/(vitesse3 - vitesse1)) * vitesse3); alert ("B31 est de " + B31); fcca = (Math.round(B30*pma*(vitesse3/100)+B31)); alert ("La valeur de la fcca est de "+ fcca); document.forms.test.fcca.readonly = false; document.forms.test.fcca.value = String( fcca ); document.forms.test.fcca.readonly = true; }else{ alert ("Vous avez commis une erreur dans la prise de temps aux différents paliers ! "); return (false); } if (who <= 0){ alert ("Malheureusement, vous n'êtes pas enregistré ... vous ne pourrez donc pas conserver vos données en mémoire et obtenir un plan d'entraînement !"); return; }else { document.getElementById('btn_val').style.visibility = 'visible'; } }
Chacun des 'IF' fonctionne indépendament mais quand j'ai mis dans l'avant dernier les calcul, j'ai la valeur 'NaN' pur la fcca dans l'alert !

J'ai donc une question par rapport à ce 'NaN' qui n'apparaîssait pas dans la fonction initiale ... qu'est-ce qui se passe ? POur info, tout les alerts me renvoit les bonnes données sauf pour la fcca !

Une autre question, j'ai voulu essayé de faire simple en rassemblant une série de fonction ... est-ce une bonne méthode ?

Merci

Posté : 26 janv. 2007, 23:41
par Sebe
Ok, j'ai trouvé un peu par hazard est l'erreur venait de mon code PHP et non de la fonction JavaScript qui récupére une valeur (pma) pour un calcul égal à 77,15 au lieu de 77.15 !

A+

Bug Avec IE !

Posté : 28 janv. 2007, 20:25
par Sebe
Salut,

Je viens de m'appercevoir qu'il y avait un petit bug avec IE ... depuis longtemps, je n'utilise plus que FF et cela fonctionnait très bien !
Ligne: 262
Car: 2
Erreur: Cet objet ne gère pas cette propriété ou cette méthode
Code: 0
La ligne en question est :

Code : Tout sélectionner

test = datetest[2]+''+datetest[1]+''+datetest[0]; //alert ("La date du test " + test);
Puis-je avoir un peu d'aide ?

Merci