Page 1 sur 1

Amélioration d'une fonction

Posté : 29 nov. 2007, 19:55
par Sebe
Bonjour,

N'étant pas un expert, je voulais savoir si ma fonction JS ne pouvait (devait) pas être amélioré ... voici mon code:

Code : Tout sélectionner

function calcVitesse(){ var tempsTab = document.forms.adminForm.temps.value.split(':'); var kilometrage = document.forms.adminForm.kilometrage.value; var temps = 0; for(i = 0; i < tempsTab.length; i++){ // Conversion de la valeur en entier var t = parseInt(tempsTab[i]); // Teste si la valeur est un chiffre if(isNaN(t)){ alert('Seuls les chiffres sont acceptés'); return(false); } // Teste si les minutes et (ou) les secondes sont comprises entre 0 et 59 if(i != 0 && tempsTab[i] > 59){ alert('Les minutes ou les secondes ne peuvent exéder 59'); return(false); } else { // Cumul du temps heure = ( Number( tempsTab[0] ) * 3600); minute = ( Number( tempsTab[1] ) * 60 ); seconde = ( Number( tempsTab[2] )); temps = heure + minute + seconde; moy = (temps / kilometrage); moyH = (Math.floor(moy/3600)); moyM = (Math.floor((moy - (moyH * 3600))/60)); moyS = (Math.floor(moy - ((moyH * 3600) + (moyM * 60)))); moyH = (moyH < 10) ? '0' + moyH : moyH ; moyM = (moyM < 10) ? '0' + moyM : moyM ; moyS = (moyS < 10) ? '0' + moyS : moyS ; moyenne = moyH + ':' + moyM + ':' + moyS; vitesse = (Math.floor((kilometrage / (temps / 3600))*1000))/1000; //alert ('moyenne ' + moyenne); document.forms.adminForm.moyenne.readonly = false; document.forms.adminForm.moyenne.value = moyenne; document.forms.adminForm.moyenne.readonly = true; document.forms.adminForm.vitesse.readonly = false; document.forms.adminForm.vitesse.value = vitesse; document.forms.adminForm.vitesse.readonly = true; } } }
Et mon code PHP pour voir vers quoi cela renvoie:
<td>
		<?php 
		if ($class->temps == ''){
			$temps = '00:00:00';
			} else {
			$temps = $class->temps;
			}
		?>
		<input name="temps" type="text" id="temps" onBlur="calcVitesse();" value="<?php echo $temps;?>" size="8" maxlength="8"/>
		</td>
		<td>
		<?php 
		if ($class->moyenne == ''){
			$moyenne = '00:00:00';
			} else {
			$moyenne = $class->moyenne;
			}
		?>
		<input name="moyenne" type="text" id="moyenne" value="<?php echo $moyenne;?>" size="8" maxlength="8"/>
		</td>
		<td><input name="vitesse" type="text" id="vitesse" value="<?php echo $class->vitesse;?>"/></td>
Merci pour vos conseils

Posté : 30 nov. 2007, 09:23
par d0m
Il y a un sujet qui parle d'un site fait pour ça :
sujet pour toi

Posté : 30 nov. 2007, 11:14
par Sebe
Merci, j'ai posté ici

A+

Posté : 02 déc. 2007, 00:43
par Sebe
Salut,

D'après ce que je comprends, un utilisateur a trouvé quelques petits problèmes comme l'utilisation de variables détectées comme 'défectueuses' !

Je reviens sur le forum pour demander un peu d'aide pour bien faire mes fonctions JS car j'ai de grosses lacunes avec ce langage ... je voudrai par exemple utiliser 2 fonctions l'un appelant l'autre !

Code : Tout sélectionner

function verifTemps(chpTemps){ //var tempsTab = document.forms.adminForm.first.value.split(':'); var tempsTab = chpTemps.value.split(':'); var temps = 0; //alert('tempsTab ' + tempsTab); for(i = 0; i < tempsTab.length; i++){ // Conversion de la valeur en entier var t = parseInt(tempsTab[i]); // Teste si la valeur est un chiffre if(isNaN(t)){ alert('Seuls les chiffres sont acceptés'); return(false); } // Teste si les minutes et (ou) les secondes sont comprises entre 0 et 59 if(i != 0 && tempsTab[i] > 59){ alert('Les minutes ou les secondes ne peuvent exéder 59'); return(false); } } } //////////////////////////// function CcalcVitesse(){ var tempsTab = document.forms.adminForm.temps.value;//.split(':'); var kilometrage = document.forms.adminForm.kilometrage.value; var temps = 0; heure = ( Number( tempsTab[0] ) * 3600); minute = ( Number( tempsTab[1] ) * 60 ); seconde = ( Number( tempsTab[2] )); temps = heure + minute + seconde; moy = (temps / kilometrage); moyH = (Math.floor(moy/3600)); moyM = (Math.floor((moy - (moyH * 3600))/60)); moyS = (Math.floor(moy - ((moyH * 3600) + (moyM * 60)))); moyH = (moyH < 10) ? '0' + moyH : moyH ; moyM = (moyM < 10) ? '0' + moyM : moyM ; moyS = (moyS < 10) ? '0' + moyS : moyS ; moyenne = moyH + ':' + moyM + ':' + moyS; vitesse = (Math.floor((kilometrage / (temps / 3600))*1000))/1000; //point = (((np-p)/np)*400) + (((D * 1000)/TS)*100) + ((d*d)/4); document.forms.adminForm.moyenne.readonly = false; document.forms.adminForm.moyenne.value = moyenne; document.forms.adminForm.moyenne.readonly = true; document.forms.adminForm.vitesse.readonly = false; document.forms.adminForm.vitesse.value = vitesse; document.forms.adminForm.vitesse.readonly = true; }
Comment utiliser la fonction 1 (pour tester les variables) dans la fonction 2?

Quelqu'un aurait-il le temps de m'aider ? Merci