Calcul de date
Fermé
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
-
Modifié par Sinistrus le 11/12/2015 à 16:56
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 - 14 déc. 2015 à 18:53
le hollandais volant Messages postés 4998 Date d'inscription samedi 8 mars 2008 Statut Membre Dernière intervention 23 décembre 2023 - 14 déc. 2015 à 18:53
A voir également:
- Calcul de date
- Calcul moyenne excel - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Airpods 3 date de sortie - Guide
- Logiciel calcul surface terrain gratuit - Télécharger - Outils professionnels
2 réponses
le hollandais volant
Messages postés
4998
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
23 décembre 2023
1 057
12 déc. 2015 à 19:30
12 déc. 2015 à 19:30
Salut,
Il ne faut pas de majuscule à "onChange". C’est "onchange", tout simplement.
Aussi, pas besoin du "javascript:ajout()". Mets simplement "ajout()", ça suffit.
Ensuite, pour le problème que tu as.
Il se trouve au niveau du "split_date". À ce stade, le "split_date[0]" contient une chaîne de caractère et non un nombre.
du coup, quand tu ajoutes un "2", il est collé à la suite et non additionné.
Il faut donc lire le nombre "2" comme un entier (2) et non pas la chaîne ("2").
Il y a une fonction interne de JavaScript qui est là pour ça : parseInt().
Dans la fonction "addDaysToDate", remplace la 5e ligne :
par ça :
Ça marche chez moi.
Il est possible que tu aies à mettre des "parseInt" partout.
tu peux voir le résultat ici : http://lehollandaisvolant.net/files/js.html
--
Il ne faut pas de majuscule à "onChange". C’est "onchange", tout simplement.
Aussi, pas besoin du "javascript:ajout()". Mets simplement "ajout()", ça suffit.
Ensuite, pour le problème que tu as.
Il se trouve au niveau du "split_date". À ce stade, le "split_date[0]" contient une chaîne de caractère et non un nombre.
du coup, quand tu ajoutes un "2", il est collé à la suite et non additionné.
Il faut donc lire le nombre "2" comme un entier (2) et non pas la chaîne ("2").
Il y a une fonction interne de JavaScript qui est là pour ça : parseInt().
Dans la fonction "addDaysToDate", remplace la 5e ligne :
var new_date = new Date(split_date[2], split_date[1]*1 - 1, split_date[0]*1 + delta_days);
par ça :
var new_date = new Date(split_date[2], split_date[1]*1 - 1, split_date[0]*1 + parseInt(delta_days));
Ça marche chez moi.
Il est possible que tu aies à mettre des "parseInt" partout.
tu peux voir le résultat ici : http://lehollandaisvolant.net/files/js.html
--
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
14 déc. 2015 à 10:11
14 déc. 2015 à 10:11
Merci le hollandais... j'avais mis
J'ai tout de même gardé ta version
Number()et ça a fonctionné aussi.
J'ai tout de même gardé ta version
parseInt()et merci pour ajout(), je savais pas.
Sinistrus
Messages postés
1010
Date d'inscription
mercredi 12 décembre 2007
Statut
Membre
Dernière intervention
6 juin 2023
17
14 déc. 2015 à 11:36
14 déc. 2015 à 11:36
Par contre, j'ai créé 2 volets. Si je renseigne un d'entre les deux, le second m'affiche
Comment y remédier ?
NaN/NaN/NaN
Comment y remédier ?
function ajout(){ document.getElementById("Date_Fin_Prev_01").value = addDaysToDate(document.getElementById("Date_Deb_Prev_01").value, document.getElementById("Date_Nbr_Prev_01").value); document.getElementById("Date_Fin_Real_01").value = addDaysToDate(document.getElementById("Date_Deb_Real_01").value, document.getElementById("Date_Nbr_Real_01").value); document.getElementById("Date_Fin_Prev_02").value = addDaysToDate(document.getElementById("Date_Deb_Prev_02").value, document.getElementById("Date_Nbr_Prev_02").value); document.getElementById("Date_Fin_Real_02").value = addDaysToDate(document.getElementById("Date_Deb_Real_02").value, document.getElementById("Date_Nbr_Real_02").value); document.getElementById("Date_Fin_Prev_03").value = addDaysToDate(document.getElementById("Date_Deb_Prev_03").value, document.getElementById("Date_Nbr_Prev_03").value); document.getElementById("Date_Fin_Real_03").value = addDaysToDate(document.getElementById("Date_Deb_Real_03").value, document.getElementById("Date_Nbr_Real_03").value); return(true);}
<input type="text_centre" name="Date_Deb_Real_01" id="Date_Deb_Real_01" class="datepicker"> <input type="text_centre" name="Date_Fin_Real_01" id="Date_Fin_Real_01" class="read" readonly> <input type="text_droite" name="Date_Nbr_Real_01" id="Date_Nbr_Real_01" onKeyUp="ajout();" value="0" onclick="this.select();"> <br><br> <input type="text_centre" name="Date_Deb_Real_02" id="Date_Deb_Real_02" class="datepicker"> <input type="text_centre" name="Date_Fin_Real_02" id="Date_Fin_Real_02" class="read" readonly> <input type="text_droite" name="Date_Nbr_Real_02" id="Date_Nbr_Real_02" onKeyUp="ajout();" value="0" onclick="this.select();">
le hollandais volant
Messages postés
4998
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
23 décembre 2023
1 057
14 déc. 2015 à 18:53
14 déc. 2015 à 18:53
"NaN" signifie « Not a Number ».
Ça signifie que la variable que tu manipule n’est pas un nombre mais autre chose (lettres, tableaux, booleans…), et donc que la opérations mathématiques ne sont pas possible.
Il doit y avoir un problème de "parseInt()" quelque part.
Je vois aussi que dans ton HTML, tu n’as que 2 séries de champs, alors que ton JS en a 3 (Date_Fin_Prev_03, etc.).
Vires cette partie là et essaye : si le champ #Date_Fin_Prev_03 n’existe pas, il retourne des erreurs.
Ça signifie que la variable que tu manipule n’est pas un nombre mais autre chose (lettres, tableaux, booleans…), et donc que la opérations mathématiques ne sont pas possible.
Il doit y avoir un problème de "parseInt()" quelque part.
Je vois aussi que dans ton HTML, tu n’as que 2 séries de champs, alors que ton JS en a 3 (Date_Fin_Prev_03, etc.).
Vires cette partie là et essaye : si le champ #Date_Fin_Prev_03 n’existe pas, il retourne des erreurs.