Java refresh

Résolu/Fermé
gilbert1995 Messages postés 414 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 30 mai 2013 - 25 nov. 2010 à 02:03
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 - 26 nov. 2010 à 15:07
Bonjour, voila j'ai un compte a rebours mais il fige il ne rafraîchit pas au seconde voila mon code
<script language="JavaScript">

// la date a partir de laquelle on compte
var cible = new Date("July 22, 2011 14:15:00");

// nombre de millisecondes par an, jour, heure, minute et seconde
var mms_an = 365 * 24 * 60 * 60 * 1000;
var mms_jour = 24 * 60 * 60 * 1000;
var mms_heure = 60 * 60 * 1000;
var mms_minute = 60 * 1000;
var mms_seconde = 1000;

function decompte() {

// la date courante
	var aujourdhui = new Date();

// on cree les variables qui accueilleront les differences entre aujourd'hui et la date a atteindre
	var change_a = -1;
	var change_j = -1;
	var change_h = -1;
	var change_m = -1;

// le total de millisecondes de differences
	var diff_mms = cible.getTime() - aujourdhui.getTime();

// le nombre d'annee(s) entieres de difference
	diff_annee = Math.floor(diff_mms / mms_an);

// on retire le nombre d'annees, fois le nombre de millisecondes par an, de la difference entre aujourd'hui et la date a atteindre
	diff_mms -= diff_annee * mms_an;

// pareil pour les jours
	diff_jours = Math.floor(diff_mms / mms_jour);
	diff_mms -= diff_jours * mms_jour;

// pour les heures
	diff_heures = Math.floor(diff_mms / mms_heure);
	diff_mms -= diff_heures * mms_heure;

// les... minutes, bravo ;-)
	diff_minutes = Math.floor(diff_mms / mms_minute);
	diff_mms -= diff_minutes * mms_minute;

// les secondes, ce qui reste en fait.
	var diff_secondes = Math.floor(diff_mms / mms_seconde);
	

// on affecte nos resultats aux champs du formulaire
	document.write('Annee' + diff_annee);
	document.write('jours' + diff_jours);
	document.write('heures' + diff_heures);
	document.write('minutes' + diff_minutes);
	document.write('secondes' + diff_secondes);
	break;

// on relance la fonction pour actualiser a la seconde
	setTimeout("decompte()",1000);
	}

</script>
<body onLoad="javascript:decompte()"></body>




A voir également:

1 réponse

Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
Modifié par Groarh le 25/11/2010 à 09:49
Salut,
tu as un gros problème ici :
// on affecte nos resultats aux champs du formulaire   
 document.write('Annee' + diff_annee);   
 document.write('jours' + diff_jours);   
 document.write('heures' + diff_heures);   
 document.write('minutes' + diff_minutes);
 document.write('secondes' + diff_secondes);
 break;

Le code ne correspond pas à ce qui est en commentaire : ça n'affecte aucun champ de formulaire. Et de toute façon, il n'y a pas de formulaire car ton <body> est vide. Quant au break, je ne comprends pas à quoi il est censé servir.

La fonction document.write() est une très vieille fonction qui détruit la page courante pour écrire des données à l'écran. Autant être clair : elle ne devrait plus du tout être utilisée aujourd'hui.

Si tu as un débugger JavaScript dans ton navigateur, tape juste document.write('bonjour') et regarde le code source de la page, tu verras que ça détruit aussi le JavaScript, bref : c'est un désastre.

De même, c'est
<script type="text/javascript">
et pas
<script langage="javascript">
sinon ça passe pas sous certains navigateurs modernes (Firefox, Opera) qui ont décidé qu'il était temps de faire bouger les choses.

Alors si tu veux faire ça proprement, utilise les méthodes du DOM, par exemple :
function print( s ) {   
    document.body.appendChild(document.createTextNode(s));   
};   

print('Annee' + diff_annee);   
print('jours' + diff_jours);   
print('heures' + diff_heures);   
print('minutes' + diff_minutes);   
print('secondes' + diff_secondes);


Il y a une méthode qui fait moins de lignes de code, mais personnellement, je la déconseille, c'est d'utiliser body.innerHTML.

Bonus : avec l'opérateur modulo (%), il y a moyen de pas mal simplifier tes calculs. Penses-y ;)
0
gilbert1995 Messages postés 414 Date d'inscription samedi 12 septembre 2009 Statut Membre Dernière intervention 30 mai 2013 29
25 nov. 2010 à 13:13
qunad je mais ce code ca répete l'heure a l'infinie
0
Groarh Messages postés 682 Date d'inscription vendredi 1 août 2008 Statut Membre Dernière intervention 28 juin 2015 185
26 nov. 2010 à 15:07
Tu as tous les éléments en main pour résoudre le problème.
Bonne chance !
0