Bonjour le monde,
Actuellement je créer un petit timer pour youtuber et je me heurte à un petit problème je n'arrive pas à faire un setTimeout de ma fonction sachant que je construit mon timer sous forme d'objet .
Voici mon code :
function Timer() {
this.now = new Date();
this.launch = new Date(2012,11,25,01,00,00);
this.name = name ;
this.countDown = function countDown(){
var now = Timer.now;
var s = (Timer.launch.getTime() - now.getTime())/1000 ;
var d = Math.floor(s/86400) ;//24*60*60
document.getElementById('day').innerHTML = d +':';
s -= d*86400;
var h = Math.floor(s/3600) ;//60*60
document.getElementById('hour').innerHTML =
((h <= 9) ? '0' :'' ) + h +':';
s -= h*3600;
var m = Math.floor(s/60);
document.getElementById('minute').innerHTML = ((m <= 9) ? '0' :'' ) +m + ':';
s -= m*60;
s = Math.floor(s);
document.getElementById('second').innerHTML = ((s <= 9) ? '0' :'' ) +s;
setTimeout(' name.countDown',1000);
};
}
var Timer = new Timer();
Timer.countDown();
air.introspector;
function Timer() {
var obj = this;
this.now = new Date();
this.launch = new Date(2012,11,25,01,00,00);
this.name = name ;
this.countDown = function countDown(){
var now = new Date();
var s = (Timer.launch.getTime() - now.getTime())/1000 ;
var d = Math.floor(s/86400) ;//24*60*60
document.getElementById('day').innerHTML = d +':';
s -= d*86400;
var h = Math.floor(s/3600) ;//60*60
document.getElementById('hour').innerHTML =
((h <= 9) ? '0' :'' ) + h +':';
s -= h*3600;
var m = Math.floor(s/60);
document.getElementById('minute').innerHTML = ((m <= 9) ? '0' :'' ) +m + ':';
s -= m*60;
s = Math.floor(s);
document.getElementById('second').innerHTML = ((s <= 9) ? '0' :'' ) +s;
setTimeout(function(){ obj.countDown(); }, 1000);
};
}
J'ai remplacé 'var now = Timer.now;' par 'var now = new Date();'
Timer.now ne change jamais car il est affecté à l'instanciation de l'objet
J'ai aussi déclaré var obj = this; au début de la fonction Timer pour avoir accès à this qui fait référence à Timer dans countDown (où this fait cette fois référence à countDown)
ce qui donne ensuite pour le timeout :
setTimeout(function(){ obj.countDown(); }, 1000);
Donc modifications ligne 2, 7 et 23.
Au passage qu'est-ce que air.introspector; ?
leur site t'expliquera mieux que moi et merci de m'avoir aidé le pire c'est que je n'étais pas loin de trouver