Addition successive d'un champ de formulaire

Serialsiner Messages postés 15 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 23 septembre 2005 - 20 août 2004 à 09:32
Serialsiner Messages postés 15 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 23 septembre 2005 - 20 août 2004 à 15:28
Bonjour,

Je cherche à additionner des heures et minutes situées dans 2 champs différents et à afficher le résultat dans un troisième champ résultat.

Le problème est que je veux réutiliser les mêmes champs pour des additions successives : l'utilisateur entre ses données, valide l'opération, les champs de saisie se remettent à zéro pour une nouvelle saisie et le résultat doit rester en mémoire pour s'additionner aux entrées de données ultérieures. (je ne sais pas si c'est très clair ...)

J'ai pondu un bout de code mais il ne fonctionne pas correctement:
Les données ne s'additionnent pas, j'obtiens seulement une succession de résultats accolés les uns aux autres (2354 au lieu de 14 par exemple).
Je voudrais également pouvoir effacer la variable du résultat en cliquant sur un bouton, j'avais créé une fonction qui mettait les variables à zéro mais ça ne fonctionne pas ...

Assez de blabla, voici le code :

<HTML>
<HEAD>
<SCRIPT language=JavaScript>
var sommex=0;
var sommey=0;
function addition() {
var x=document.form0.x.value;
var y=document.form0.y.value;
while (y>=60) { x++; y=y-60}
resultx=sommex+x;
resulty=sommey+y;

form0.resultat1.value=" "+resultx+"h"+resulty+"mn";
sommex=resultx;
sommey=resulty;
document.form0.x.value=0;
document.form0.y.value=0;
}
</SCRIPT>
</HEAD>

<FORM name=form0>
Heures:

Minutes:



Résultat :

</FORM>
</HTML>

Merci pour votre aide.

Stéphan

7 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
20 août 2004 à 12:48
Bonjour,
var x=parseInt(document.form0.x.value,10);
var y=parseInt(document.form0.y.value,10);

car sinon considéré comme string et le +
concatène au lieu d'additionner
parseInt(x,10) sinon "015" par exemple
serait considéré comme de l'octal.
=> il ne reste plus car rectifier l'affichage
du résultat ( 2h75 c'est pas beau )
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
0
Serialsiner Messages postés 15 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 23 septembre 2005
20 août 2004 à 13:07
Merci énormément, décidément tu es mon sauveur ... pour la mise en forme je m'en charge mais je butais sur cette histoire de concaténation.

Excuse-moi de t'embêter encore un peu, mais pour remettre à zéro le résultat je fais comment ?
Je pensais créér une fonction du style:

function efface() {
resultx=0;
resulty=0;
}

et l'appeler sur l'evènement onclick d'un bouton, mais ça ne marche pas, j'ai une erreur d'objet attendu : (
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
20 août 2004 à 14:22
déjà le va le faire
donc est-ce utile ?
et quand un champ est dans un form ( ce qui est je
crois obligatoire sous certains navigateurs ), il faut
le dire : form0.resultx=0; ici.
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
0
Serialsiner Messages postés 15 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 23 septembre 2005
20 août 2004 à 14:41
Ca ne marche pas : le reset efface bien le champ mais les variables contenant le résultat restent stockées et l'addition continue si on entre de nouvelles données.

Je vais encore chercher ...

Merci encore pour ton aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
20 août 2004 à 14:56
resultx=sommex+x;
resulty=sommey+y;
donc remettre à 0 sommex et sommey
il y a d'autres solutions
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
0
Serialsiner Messages postés 15 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 23 septembre 2005
20 août 2004 à 15:11
Il y a un problème que je ne cerne pas avec la fonction que je crée :

function efface(){
sommex=0;
sommey=0;
}


Le navigateur me retourne l'erreur "Objet attendu" sur la ligne :

Résultat : 


Même chose si c'est resultx et resulty que je passe à zéro ... je ne comprends pas.
0
Serialsiner Messages postés 15 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 23 septembre 2005
20 août 2004 à 15:28
Ca y est ça marche, je ne mettais pas ma fonction au bon endroit, il fallait la placer juste après les variables globales.
0
Rejoignez-nous