Reinitialisation de la page

Résolu
MOI -  
 MOI -
Bonjour,

Dans le code de ma page Internet, je souhaite appeler une fonction (ordredate) toutes les secondes.
Pour cela j'ai fait une boucle de temps comme indiquer par le code ci-dessous
Seulement ma fonction est appelé une première fois après une seconde et après elle n'est plus jamais appelé.
Je précise que ma fonction "ordredate" fait un certain nombre de document.write... je me demande si c'est pas ça qui pose problème mais je ne sais pas comment faire pour réécrire ma page toutes les secondes en faite...

Je ne sais pas si je suis très clair.

Merci pour votre aide

<script type = "text/javascript">
	var i = 0;
	alert(i);
	function augmenter()
	{
		i ++;
		document.getElementById("timer").innerHTML = i;
		ordredate();
	}
	setInterval("augmenter()",1000);
</script>
</head>
<body >
<p id="timer">0</P>


</body>
Configuration: Windows XP Internet Explorer 6.0

8 réponses

  1. Ozimandias Messages postés 528 Statut Membre 46
     
    Ce serais pas mal de mettre ta fonction ordredate aussi...

    0
  2. MOI
     
    Elle fait juste des calculs de date puis affiche le résultat du calcul via des document.write
    0
  3. Ozimandias Messages postés 528 Statut Membre 46
     
    ben justement... document.write écrit sur la page en supprimant ce qu'il y avait avant.

    Ton problème est peut être ici. Sans la page entière, je crois qu'on pourra pas t'aider.

    0
  4. MOI
     
    J'ai adapté pour rendre plus simple

    On va dire que je veux que la page affiche certaines informations en la date du jour et le debut de l'année et que toutes les informations qui s'affichent dans le tableau soient mis à jour chaque secondes
    (y'a peut etre des trucs qui servent a rien dans le code, j'ai peut etre mal nettoyer pour donner mon exemple mais c'est pas grave, on s'en fout :) )

    <html>
    <head>
    <title>Nous</title>
    
    
    <script type = "text/javascript">
    	var i = 0;
    	function augmenter()
    	{
    		i ++;
    		document.getElementById("timer").innerHTML = i;
    		ordredate();
    	}
    	setInterval("augmenter()",1000);
    
    </script>
    
    <script type = "text/javascript">
    
    
    function calculduree(jourdebut,moisdebut,anneedebut,jourfin,moisfin,anneefin,heurefin,minutefin,secondefin)
    {
    	function calcul_longueur_mois(annee)
    	{
    		//préconditions : annee est en entier
    		//postconditions : retourne un tableau de 12 éléments d'entier qui indique le nombre de jours dans chaque mois
    		var longueurmois=[31,28,31,30,31,30,31,31,30,30,30,31];
    		if((!(annee % 4) && (annee % 100)) || !(annee % 400)) //vérifie si l'année traitée est bissextile
    		{
    			longueurmois=[31,28,31,30,31,30,31,31,30,30,30,31];		
    		}
    		return longueurmois;		
    	}
    		
    	var duree=0;
    
    	for(i=anneedebut;i<anneefin;i++)
    	{
    		if((!(i % 4) && (i % 100)) || !(i % 400)) //vérifie si l'année traitée est bissextile
    		{
    			duree+=366;
    		}
    		else
    		{
    			duree+=365;
    		}
    	}
    
    	var longueurmois=calcul_longueur_mois(anneedebut);
    	for(i=0;i<moisdebut;i++)
    	{
    		if(i==moisdebut-1){duree-=jourdebut}
    		else{duree-=longueurmois[i]}
    	}
    	
    	var longueurmois=calcul_longueur_mois(anneefin);
    	for(i=0;i<moisfin;i++)
    	{
    		if(i==moisfin-1){duree+=jourfin}
    		else{duree+=longueurmois[i]}
    	}
    	return duree;
    }
    		
    
    function ordredate()
    {
    	jourdebut=parseInt("01",10);
    	moisdebut=parseInt("01",10);
    	anneedebut=parseInt("2009",10);
    	heuredebut=parseInt("0",10);
    	minutedebut=parseInt("00",10);
    	secondedebut=parseInt("00",10);
    	
    	var aujourdhui=new Date();
    	var AujJour=aujourdhui.getDate();
    	var AujMois=aujourdhui.getMonth() + 1;
    	var AujAnnee=aujourdhui.getFullYear();
    	var AujHeure=aujourdhui.getHours();
    	var AujMinute=aujourdhui.getMinutes();
    	var AujSeconde=aujourdhui.getSeconds();
    
    	if (AujMois < 10)
    	{
    		AujMois = "0" + AujMois;
    	}
    
    	jourfin=parseInt(AujJour,10);
    	moisfin=parseInt(AujMois,10);
    	anneefin=parseInt(AujAnnee,10);
    	heurefin=parseInt(AujHeure,10);
    	minutefin=parseInt(AujMinute,10);
    	secondefin=parseInt(AujSeconde,10);
    	
    	nbjour=calculduree(jourdebut,moisdebut,anneedebut,jourfin,moisfin,anneefin,heuredebut,minutedebut,secondedebut,heurefin,minutefin,secondefin);
    
    	diffannee = anneefin-anneedebut;
    	diffmois = moisfin-moisdebut;
    	diffjour = jourfin-jourdebut;
    	diffheure = heurefin - heuredebut;
    	diffminute = minutefin - minutedebut;
    	diffseconde = secondefin - secondedebut;
    
    	document.write("<TABLE BORDER=1><TR><TD width=100>En temps</TD>");
    	document.write("<TD width=500 align=right>" + diffannee + " année, " + diffmois + " mois, " + diffjour + " jours, " + diffheure + " heures " + diffminute + " minutes " + diffseconde + " secondes</TD></TR>");
    	document.write("<TR><TD width=100>En semaines</TD><TD width=500 align=right>" + Math.ceil(nbjour/7) + " </TD></TR>");
    	document.write("<TR><TD width=100>En jours</TD><TD width=500 align=right>" + nbjour + " </TD></TR>");
    	document.write("<TR><TD width=100>En heures</TD><TD width=500 align=right>" + (nbjour*24 + diffheure) +" </TD></TR>");
    	document.write("<TR><TD width=100>En minutes</TD><TD width=500 align=right>" + (nbjour*1440 + diffheure*60 + diffminute) +" </TD></TR>");
    	document.write("<TR><TD width=100>En secondes</TD><TD width=500 align=right>" + (nbjour*86400 + diffheure*3600 + diffminute*60 + diffseconde) + " </TD></TR></TABLE><BR>");
    	
    }
    
    </script>
    
    </head>
    <body >
    
    
    <p id="timer"></P>
    
    
    </body>
    </html>
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Ozimandias Messages postés 528 Statut Membre 46
     
    Voila, c'est ce que je disais, ton document.write pose problème...

    essaye avec ça:

    <body >
    <div id="zoneAffichageDate">&nbsp;</div> <!-- là pour id tu met ce que tu veux -->
    
    <p id="timer"></P>
    
    
    </body>
    


    et dans ta fonction à la place de document.write tu mets:

    var divAmodifier = document.getElementById('zoneAffichageDate'); // cette ligne sert à éviter d'avoir à réécrire, le programmeur est un feignant.
    
    divAmodifier.innerHTML += "<TABLE BORDER=1><TR><TD width=100>En temps</TD>";
    divAmodifier.innerHTML += "<TD width=500 align=right>" + diffannee + " année, " + diffmois + " mois, " + diffjour + " jours, " + diffheure + " heures " + diffminute + " minutes " + diffseconde + " secondes</TD></TR>";
    
    ETC....
    
    

    0
  7. MOI
     
    Impec c'est exactement ce que je voulais :-D

    Merciiiiiiiiiiiiiiiiiiiiiiiiiiii
    0
  8. Ozimandias Messages postés 528 Statut Membre 46
     
    As-tu compris pourquoi au moins?

    0
  9. MOI
     
    Oui oui je savais pourquoi ça plantait, mais je connaissais pas la methode pour corriger :-)
    0