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 :
ou a sa :
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>"; }
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.
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>"; }
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 !
Partager