Calcul age programmer anniversaire
Résolu/Fermé
moon136
Messages postés
71
Date d'inscription
samedi 12 août 2017
Statut
Membre
Dernière intervention
17 avril 2018
-
5 sept. 2017 à 23:28
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018 - 6 sept. 2017 à 15:01
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018 - 6 sept. 2017 à 15:01
A voir également:
- Calcul age programmer anniversaire
- Calcul moyenne excel - Guide
- Gta age ✓ - Forum Jeux vidéo
- Scream age - Forum Cinéma / Télé
- Programmer sms - Guide
- Fitness park age minimum - Forum Loisirs / Divertissements
5 réponses
jordane45
Messages postés
38267
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 novembre 2024
4 694
5 sept. 2017 à 23:30
5 sept. 2017 à 23:30
Bonjour,
Merci de bien vouloir poster ton code directement sur le forum
(en utilisant la coloration syntaxique : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code)
Ensuite, vu qu'il s'agit d'un souci javascript.... as tu regardé dans la console si des messages d'erreur apparaissent ??
Merci de bien vouloir poster ton code directement sur le forum
(en utilisant la coloration syntaxique : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code)
Ensuite, vu qu'il s'agit d'un souci javascript.... as tu regardé dans la console si des messages d'erreur apparaissent ??
moon136
Messages postés
71
Date d'inscription
samedi 12 août 2017
Statut
Membre
Dernière intervention
17 avril 2018
5 sept. 2017 à 23:40
5 sept. 2017 à 23:40
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>exercice12</title> <link rel="stylesheet" href="style.css"> <script src="calculage.js"></script> </head> <body> <h1>Calcul de l'âge</h1> <br> <FORM name="formage"> Entrez votre date de naissance (JJ/MM/AAAA) : <INPUT type=text name="dt_naissance" size=10 maxlength=10> <INPUT type=button id= "calcul"value="Calcul" onClick="alert('Age = '+tjs_age(this.form.dt_naissance.value))"> </FORM> </body> </html>
function CheckDate(d) { // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date. // Le séparateur est défini dans la variable separateur var amin=1850; // année mini var amax=2500; // année maxi var separateur="/"; // separateur entre jour/mois/annee var j=(d.substring(0,2)); var m=(d.substring(3,5)); var a=(d.substring(6)); var ok=1; if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) { alert("Le jour n'est pas correct."); ok=0; } if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) { alert("Le mois n'est pas correct."); ok=0; } if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) { alert("L'année n'est pas correcte."); ok=0; } if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) { alert("Les séparateurs doivent être des "+separateur); ok=0; } if (ok==1) { var d2=new Date(a,m-1,j); j2=d2.getDate(); m2=d2.getMonth()+1; a2=d2.getYear(); if (a2<=100) {a2=1900+a2} ok=d2; } return ok; } function tjs_age(dt) { var d=CheckDate(dt) var m=new Date() var age=""; var age_a=0;var age_m=0; if (d!=0) { if (d.getTime()>m.getTime()) { age="La date de naissance est supérieure à la date du jour !"; document.formage.dt_naissance.focus(); } age_a = m.getFullYear()-d.getFullYear(); m.setYear(d.getYear()); if ((d.getTime()>m.getTime())&&(d.getMonth()-m.getMonth()!=0)) {age_a--;} if (d.getMonth() >= m.getMonth()) { age_m = 12 - (d.getMonth()-m.getMonth()) } else { age_m = (m.getMonth()-d.getMonth()) } if (age_m==12) {age_m=0;} if (age_a==1) { age=age_a+" an"} if (age_a>1) { age=age_a+" ans"} if ((age_a>0)&&(age_m>0)) if (age=="") { age="Vous n'êtes pas encore née!"} } else { document.formage.dt_naissance.focus(); } return age; } var today=new Date(), mois_actuel= today.getMonth() +1, jour_actuel= today.getDate(); if (mois_actuel === 5 && jour_actuel === 3) { } alert ("Bon anniversaire!!");
le message marche que au chargement de la page avec ces codes l'alerte en dehors de l'accolade...
dans la console je n'ai pas de message d'erreur
merci jordane
jordane45
Messages postés
38267
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
2 novembre 2024
4 694
6 sept. 2017 à 00:33
6 sept. 2017 à 00:33
Déjà.. il manque des guillemets dans ton onclick.
ensuite.. il y a plus simple.....
regarde ceci :
ensuite.. il y a plus simple.....
regarde ceci :
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>test</title> </head> <body> <input type="text" id="dateN" value="27/08/1980"> <input type="button" id="calculer" onclick="getAge()" value="go"> <br> <span id="affichage"> </span> <script type="text/javascript"> //converti une date fr (dd/mm/YYYY) en DATE function getDate(strDate){ day = strDate.substring(0,2); month = strDate.substring(3,5); year = strDate.substring(6,10); d = new Date(); d.setDate(day); d.setMonth(month); d.setFullYear(year); return d; } function getAge() { var birthday = getDate(document.getElementById('dateN').value); console.log("birthday : " + birthday); if(typeof(birthday)!="undefined" && birthday!=null){ var ageDifMs = Date.now() - birthday.getTime(); //diff en milisecondes var ageDate = new Date(ageDifMs); document.getElementById('affichage').innerHTML = 'Age : ' + Math.abs(ageDate.getUTCFullYear() - 1970+1); }else{ console.log("Erreur ! " + birthday); } } </script> </body> </html>
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
6 sept. 2017 à 10:00
6 sept. 2017 à 10:00
Jordane,
Je pense que Moon ne veut pas calculer l'âge, mais souhaiter un bon anniversaire si le le jour et mois de la date de naissance correspondent au jour et mois actuel, et ce après avoir vérifié le format de la saisie.
D'autre part, si je saisis "27008K1980ThJS%" dans la boite, ton code va répondre 37, alors que la date de naissance n'est pas au format demandé.
Sinon, il y a Date.parse() dans les fonctions Javascript, mais qui ne semble pas reconnaître ce format JJ/MM/AAAA et elle n'offre pas le contrôle souhaité par Moon.
Pour plus de contrôle, il faut une bibliothèque ou faire son propre parser, par exemple avec des regexp.
Dal
Je pense que Moon ne veut pas calculer l'âge, mais souhaiter un bon anniversaire si le le jour et mois de la date de naissance correspondent au jour et mois actuel, et ce après avoir vérifié le format de la saisie.
D'autre part, si je saisis "27008K1980ThJS%" dans la boite, ton code va répondre 37, alors que la date de naissance n'est pas au format demandé.
Sinon, il y a Date.parse() dans les fonctions Javascript, mais qui ne semble pas reconnaître ce format JJ/MM/AAAA et elle n'offre pas le contrôle souhaité par Moon.
Pour plus de contrôle, il faut une bibliothèque ou faire son propre parser, par exemple avec des regexp.
Dal
moon136
Messages postés
71
Date d'inscription
samedi 12 août 2017
Statut
Membre
Dernière intervention
17 avril 2018
6 sept. 2017 à 11:12
6 sept. 2017 à 11:12
desole je n'arrive pas a modifier mon message precedent, donc voici les bon codes
voila Dal je veux juste programmer l'anniversaire et avoir le message bon anniversaire + mettre l'evenement onclik dans le fichier js.
merci
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>exercice12</title> <link rel="stylesheet" href="style.css"> <script src="calculage.js"></script> </head> <body> <h1>Calcul de l'âge</h1> <br> <FORM name="formage"> Entrez votre date de naissance (JJ/MM/AAAA) : <INPUT type=text name="dt_naissance" size=10 maxlength=10> <INPUT type=button value="Calcul de l'âge" onClick="alert('Age = '+tjs_age(this.form.dt_naissance.value))"></FORM> </body> </html>
function CheckDate(d) { // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date. // Le séparateur est défini dans la variable separateur var amin=1850; // année mini var amax=2500; // année maxi var separateur="/"; // separateur entre jour/mois/annee var j=(d.substring(0,2)); var m=(d.substring(3,5)); var a=(d.substring(6)); var ok=1; if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) { alert("Le jour n'est pas correct."); ok=0; } if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) { alert("Le mois n'est pas correct."); ok=0; } if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) { alert("L'année n'est pas correcte."); ok=0; } if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) { alert("Les séparateurs doivent être des "+separateur); ok=0; } if (ok==1) { var d2=new Date(a,m-1,j); j2=d2.getDate(); m2=d2.getMonth()+1; a2=d2.getYear(); if (a2<=100) {a2=1900+a2} ok=d2; } return ok; } function tjs_age(dt) { var d=CheckDate(dt) var m=new Date() var age=""; var age_a=0;var age_m=0; if (d!=0) { if (d.getTime()>m.getTime()) { age="La date de naissance est supérieure à la date du jour !"; document.formage.dt_naissance.focus(); } age_a = m.getFullYear()-d.getFullYear(); m.setYear(d.getYear()); if ((d.getTime()>m.getTime())&&(d.getMonth()-m.getMonth()!=0)) {age_a--;} if (d.getMonth() >= m.getMonth()) { age_m = 12 - (d.getMonth()-m.getMonth()) } else { age_m = (m.getMonth()-d.getMonth()) } if (age_m==12) {age_m=0;} if (age_a==1) { age=age_a+" an"} if (age_a>1) { age=age_a+" ans"} if ((age_a>0)&&(age_m>0)) if (age=="") { age="Vous n'êtes pas encore née!"} } else { document.formage.dt_naissance.focus(); } return age; } var today=new Date(), mois_actuel= today.getMonth() +1, jour_actuel= today.getDate(); if (mois_actuel === 5 && jour_actuel === 3) { } alert ("Bon anniversaire!!");
voila Dal je veux juste programmer l'anniversaire et avoir le message bon anniversaire + mettre l'evenement onclik dans le fichier js.
merci
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié le 6 sept. 2017 à 12:20
Modifié le 6 sept. 2017 à 12:20
une façon de faire avec des changements minimaux à ton code est de déclarer m2 et j2 en tant que variables globales et mettre les lignes bizarres 70 et suivantes corrigées dans une fonction :
et mettre l'appel de cette fonction à la suite de ton alert dans le fichier html, comme cela :
function souhaiter() { var today=new Date(), mois_actuel= today.getMonth() + 1; jour_actuel= today.getDate(); if ( (mois_actuel == m2) && (jour_actuel == j2) ) { alert ("Bon anniversaire!!"); } }
et mettre l'appel de cette fonction à la suite de ton alert dans le fichier html, comme cela :
onClick="alert('Age = '+tjs_age(this.form.dt_naissance.value));souhaiter()"
moon136
Messages postés
71
Date d'inscription
samedi 12 août 2017
Statut
Membre
Dernière intervention
17 avril 2018
>
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
6 sept. 2017 à 13:04
6 sept. 2017 à 13:04
merciii Dal ca fonctionne trés bien!! ouf, me reste plus qu a enlever le On Click pour le mettre dans le fichier js par la methode addeventListener
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
moon136
Messages postés
71
Date d'inscription
samedi 12 août 2017
Statut
Membre
Dernière intervention
17 avril 2018
6 sept. 2017 à 14:42
6 sept. 2017 à 14:42
le document getelementbyid qui est nul, et dans le script c'est document.formage.dt_naissance.focus c'est ca qui fait que ca marche pas l'evenement
moon136
Messages postés
71
Date d'inscription
samedi 12 août 2017
Statut
Membre
Dernière intervention
17 avril 2018
6 sept. 2017 à 15:01
6 sept. 2017 à 15:01
c'est bon c'est resolu ;)
merci a vous deux :)
merci a vous deux :)