Bonjour, je me penche actuellement sur la réalisation d'une progress bar, gérer non pas par le temps, mais par l'execution d'un script.

Je traite un tableau dans une boucle for, j'ai donc penser a deux solutions, dont aucune n'a marché :

-a chaque tour de boucle faire un innerHTML pour agrandir une div (ou modifier un texte pour afficher le pourcentage)

-creer un timer qui appelerait une fonction modifiant le html via des variable global que je modifie dans mon for

mon code ressemble donc a sa pour la premiere solution :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
for(i ; i < tab.length ; i++)
    {
    //Execution du traitement du tableau
 
    ProgressBar.innerHTML = "<font color=\"0x00FF\" >"+Math.round(((i/tab.length)*100))+"%</font>"; 
    }
ou a sa :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
//Variable Global
var iGlobal ;
var iTotal ;
 
//[...]
 
timer = new Timer() ; //j'ai une classe timer a ma disposition qui appel une fonction toute les seconde
 
iTotal = tab.length ;
timer.function = "UpdateProgressBar()"
 
for(i ; i < tab.length ; i++)
    {
    iGlobal = i ;
    //Execution du traitement du tableau
    }
 
//[...]
 
function UpdateProgressBar ()
{
ProgressBar.innerHTML = "<font color=\"0x00FF\" >"+((iForTimer/iTotalForTimer)*100)+"%</font>";  
}
Le souci c'est que je ne sais pas pourquoi, mais cela ne veux pas s'updater dans le for, le pourcentage passe de 0% à 100% d'un coup, dans les deux cas.

Y a t-il des propriétés de communication entre jscript et html qui empêcherait le html de s'actualiser a l’intérieur d'une boucle ?

Ou si vous avez une solution sympa qui marcherait (je ne peux me permetre d'utiliser que du jscript, pas de jQuery, ou autre AJAX, etc)

Merci !