begin process at 2012 05 29 21:21:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

Problème de script count-up !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de script count-up !

samedi 8 janvier 2011 à 07:45:04 | Problème de script count-up !

Synthos

Bonjour à toutes et tous,

Suite à la naissance de mon fils, je lui ai créé un blog photo. Je souhaitai y intégrer un script affichant dynamiquement son âge en années, mois, jours, heures, minutes et secondes (oui, c'est niais, mais les parents présents comprendront la démarche ^^). J'ai pu trouver après moultes recherches un script remplissant plutôt bien cette fonction, jusqu'à peu de temps, où à la place du nombre de jours s'affiche un joli "NaN" (Not A Number, ça je sais, mais dans l'absolu, ça m'aide pas !). J'ai cherché des solutions de mon côté, mais comme je suis une sous-quiche en JS, j'ai pas trouvé de solution. Ci-dessous, le code :

[[[[CODE]]]]
<script type="text/javascript">
function CountUp(initDate, id, msg){
this.beginDate = new Date(initDate);
this.msg = msg;
this.numOfDays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
this.borrowed = 0, this.years = 0, this.months = 0, this.days = 0;
this.hours = 0, this.minutes = 0, this.seconds = 0;
this.updateNumOfDays();
this.calculate(id);
}

CountUp.prototype.updateNumOfDays=function(){
var dateNow = new Date();
var currYear = dateNow.getFullYear();
if ( (currYear % 4 == 0 && currYear % 100 != 0 ) || currYear % 400 == 0 ) {
this.numOfDays[1] = 29;
}
var self = this;
setTimeout(function(){self.updateNumOfDays();}, (new Date((currYear+1), 1, 1) - dateNow));
}

CountUp.prototype.datePartDiff=function(then, now, MAX){
var diff = now - then - this.borrowed;
this.borrowed = 0;
if ( diff > -1 ) return diff;
this.borrowed = 1;
return (MAX + diff);
}

CountUp.prototype.formatTime=function(){
this.seconds = this.addLeadingZero(this.seconds);
this.minutes = this.addLeadingZero(this.minutes);
this.hours = this.addLeadingZero(this.hours);
}

CountUp.prototype.addLeadingZero=function(value){
return value < 10 ? ("0" + value) : value;
}

CountUp.prototype.calculate=function(id){
var currDate = new Date();
var prevDate = this.beginDate;
this.seconds = this.datePartDiff(prevDate.getSeconds(), currDate.getSeconds(), 60);
this.minutes = this.datePartDiff(prevDate.getMinutes(), currDate.getMinutes(), 60);
this.hours = this.datePartDiff(prevDate.getHours(), currDate.getHours(), 24);
this.days = this.datePartDiff(prevDate.getDate(), currDate.getDate(), this.numOfDays[currDate.getMonth()-1]);
this.months = this.datePartDiff(prevDate.getMonth(), currDate.getMonth(), 12);
this.years = this.datePartDiff(prevDate.getFullYear(), currDate.getFullYear(),0);
this.formatTime();
var countainer = document.getElementById(id);
countainer.innerHTML ="<strong>" + this.years + "</strong> <small>" + (this.years == 1? "year" : "année(s),") + "</small>" +
" <strong>" + this.months + "</strong> <small>" + (this.months == 1? "month" : "mois,") + "</small>" +
" <strong>" + this.days + "</strong> <small>" + (this.days == 1? "day" : "jour(s),") + "</small>" +
" <strong>" + this.hours + "</strong> <small>" + (this.hours == 1? "hour" : "heure(s),") + "</small>" +
" <strong>" + this.minutes + "</strong> <small>" + (this.minutes == 1? "minute" : "minute(s),") + "</small>" +
" <strong>" + this.seconds + "</strong> <small>" + (this.seconds == 1? "second" : "seconde(s)") + "</small>" +
" <strong> " + this.msg + " </strong>";
var self = this;
setTimeout(function(){self.calculate(id);}, 1000);
}
</script>
<div id="counter">Contents of this DIV will be replaced by the timer</div>
<script type="text/javascript">new CountUp('December 08, 2010 10:46:00 GMT', 'counter', "depuis ma naissance.");</script>
[[[[/CODE]]]]

Si quelqu'un, par miracle, trouve la solution, je le supplie de me la donner, et si possible, de m'expliquer la cause de l'erreur (j'aime bien comprendre pourquoi ça marche pas, quand ça marche pas !)

Merci d'avance !
Syn'
samedi 8 janvier 2011 à 09:23:42 | Re : Problème de script count-up !

PetoleTeam

Membre Club
Bonjour,
(oui, c'est niais, mais les parents présents comprendront la démarche ^^)
<HUMOUR>
quelle drôle d'idée, tu ne le calcules pas de tête?
</HUMOUR>
un truc m'intrigue sur cette ligne
Code Javascript :
this.days = this.datePartDiff(prevDate.getDate(), currDate.getDate(), this.numOfDays[currDate.getMonth()-1]); 
et surtout cela
Code Javascript :
this.numOfDays[currDate.getMonth()-1])
tu lis un indice de tableau qui n'existe pas au mois de janvier, en janvier l'indice du mois est 0.

ne serais ce pas plutôt simplement
Code Javascript :
this.days = this.datePartDiff(prevDate.getDate(), currDate.getDate(), this.numOfDays[currDate.getMonth()]);


;O)
samedi 8 janvier 2011 à 13:41:37 | Re : Problème de script count-up !

Synthos

Bonjour Petole, et merci pour ta réponse !

Bien sûr que si, en ce qui me concerne, je compte de tête, mais je ne peux l'imposer aux visiteurs dudit site !

Grosse surprise en me réveillant, le NaN avait disparu, et laissait place à "1", ce qui correspond parfaitement. Dans le doute, j'ai tout de même corrigé l'erreur que tu as relevé, et je verrai bien ce qu'il en est à l'avenir !

Merci beaucoup, donc !

Et pour te remercier, voici le site en question : http://filmoz.fr/nathan

A bientôt pour d'autres casse-tête ! :)


Cette discussion est classée dans : function, minutes, seconds, hours, countup


Répondre à ce message

Sujets en rapport avec ce message

RCH AIDE COMPTE A REBOUR [ par Infosysteme ] Bonjour a tous je recherche un coup de main pour realiser un compte a rebour heures - minutes- secondes avec fonctions pause & start  et comment faire Problèmes affichage horloges en direct [ par santille ] Bonjour, Ci-dessous le code qui me pose problème. Je voudrais afficher l'heure qu'il fait à Tokyo (GMT+9, sauf erreur) mais je ne sais pas comment le Interaction JS/PHP [ par simook2 ] [code=js] Counter seconds simple <script src="jquery-1.4.2.min. pb getter et setter sur ie<9 [ par aerolyte ] bonjour, habitué a l'actionscript me voila bien embéter. J'ai un bout de code qui marche bien sauf pour ie<9 [code=js]var Charg=(function(){ 'use st Problème avec function [ par titan3131 ] [^^happy10] Pierre Nonclercq Bonjour Je suis débutant et fait beaucoup d'exercice pour me faliliariser avec javascript Voici le code que j'ai écrit afficher le contenu de tbody [ par addrock ] salut a tous j'ai créé cette code qui me permet d'afficher le contenu de "tbody" lorsque je clic sur "clic" alors mon problème je veux afficher le Galerie Jquery et Zoom, besoin d'aide pour finaliser code [ par Annadrill ] Bonjour, j'ai une page créé en php ou j'ai plusieurs petites images et une grande image et lorsque je clique sur une des petites images cela me char


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,714 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales