Je voudrais afficher l'état d'avancement des traitements effectués par un
script appelé par un formulaire, de façon à ce que l'utilisateur puisse
"suivre" les différentes étapes. Il me semblait qu'utiliser innerHTML serait
une bonne solution, mais cela ne fonctionne pas comme je l'imaginais.
En d'autres termes, dans l'exemple ci-dessous, seul le message "Fin du test"
apparaît (la fonction tempo() n'est là que pour simuler un temps de
traitement). Je ne sais pas si je m'y prends mal ou si innerHTML n'est pas
adapté à la situation ; dans ce deuxième cas quelle serait la solution ?
<html>
<head>
<script type="text/javascript">
function monTest() {
var nfo = document.getElementById("nfo");
nfo.innerHTML = "<p>Test : première étape</p>";
tempo();
nfo.innerHTML = "<p>Test : deuxième étape</p>";
tempo();
nfo.innerHTML = "<p>Fin du test</p>";
}
function tempo() {
var t1, t2, ms;
t1 = new Date();
while(1) {
t2 = new Date();
ms = t2 - t1;
if(ms > 2000) break;
}
}
</script>
</head>
<body>
<div id="nfo"><p>Cliquer sur le bouton pour lancer le test...</p></div>
<form action="javascript:monTest()">
<input type="submit" value=" Test " />
</form>
</body>
</html>
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Thibault TAILLANDIER
Bonjour,
Je voudrais afficher l'état d'avancement des traitements effectués par un script appelé par un formulaire, de façon à ce que l'utilisateur puisse "suivre" les différentes étapes. Il me semblait qu'utiliser innerHTML serait une bonne solution, mais cela ne fonctionne pas comme je l'imaginais.
innerHTML est comme une variable qui contiendrait tout le texte que tu veux afficher, il faut donc rajouter le texte que tu veux avec des + function monTest() { var nfo = document.getElementById("nfo"); nfo.innerHTML = "<p>Test : première étape</p>"; tempo(); nfo.innerHTML += "<p>Test : deuxième étape</p>"; tempo(); nfo.innerHTML += "<p>Fin du test</p>"; }
C'est pas testé et j'ai pas regardé le reste du script, mais ca devrait faire ce que tu souhaites si le reste marchait :-)
Bye -- Thibault
Bonjour,
Je voudrais afficher l'état d'avancement des traitements effectués par un
script appelé par un formulaire, de façon à ce que l'utilisateur puisse
"suivre" les différentes étapes. Il me semblait qu'utiliser innerHTML serait
une bonne solution, mais cela ne fonctionne pas comme je l'imaginais.
innerHTML est comme une variable qui contiendrait tout le texte que tu
veux afficher, il faut donc rajouter le texte que tu veux avec des +
function monTest() {
var nfo = document.getElementById("nfo");
nfo.innerHTML = "<p>Test : première étape</p>";
tempo();
nfo.innerHTML += "<p>Test : deuxième étape</p>";
tempo();
nfo.innerHTML += "<p>Fin du test</p>";
}
C'est pas testé et j'ai pas regardé le reste du script, mais ca devrait
faire ce que tu souhaites si le reste marchait :-)
Je voudrais afficher l'état d'avancement des traitements effectués par un script appelé par un formulaire, de façon à ce que l'utilisateur puisse "suivre" les différentes étapes. Il me semblait qu'utiliser innerHTML serait une bonne solution, mais cela ne fonctionne pas comme je l'imaginais.
innerHTML est comme une variable qui contiendrait tout le texte que tu veux afficher, il faut donc rajouter le texte que tu veux avec des + function monTest() { var nfo = document.getElementById("nfo"); nfo.innerHTML = "<p>Test : première étape</p>"; tempo(); nfo.innerHTML += "<p>Test : deuxième étape</p>"; tempo(); nfo.innerHTML += "<p>Fin du test</p>"; }
C'est pas testé et j'ai pas regardé le reste du script, mais ca devrait faire ce que tu souhaites si le reste marchait :-)
Bye -- Thibault
Jérémie Fouché
Bonjour,
Je voudrais afficher l'état d'avancement des traitements effectués par un script appelé par un formulaire, de façon à ce que l'utilisateur puisse "suivre" les différentes étapes. Il me semblait qu'utiliser innerHTML serait une bonne solution, mais cela ne fonctionne pas comme je l'imaginais.
En d'autres termes, dans l'exemple ci-dessous, seul le message "Fin du test" apparaît (la fonction tempo() n'est là que pour simuler un temps de traitement). Je ne sais pas si je m'y prends mal ou si innerHTML n'est pas adapté à la situation ; dans ce deuxième cas quelle serait la solution ?
<html> <head> <script type="text/javascript"> function monTest() { var nfo = document.getElementById("nfo"); nfo.innerHTML = "<p>Test : première étape</p>"; tempo(); nfo.innerHTML = "<p>Test : deuxième étape</p>"; tempo(); nfo.innerHTML = "<p>Fin du test</p>"; } function tempo() { var t1, t2, ms; t1 = new Date(); while(1) { t2 = new Date(); ms = t2 - t1; if(ms > 2000) break; } } </script> </head> <body> <div id="nfo"><p>Cliquer sur le bouton pour lancer le test...</p></div> <form action="javascript:monTest()"> <input type="submit" value=" Test " /> </form> </body> </html>
Ta fonction tempo est blocante, c'est a dire que ton script va se dérouler d'un coup d'un seul. Si tu veux qu'il y ai un affichage pendant ton script, il faut que ton script ne soit pas blocant. Tu peux utiliser la fonction SetTimeout, qui repond a ton besoin. Ton script ressemblerait a quelquechose du style
function monTest() { etape(1); }
function etape(i) { nfo.innerHTML = "<p>Test : étape "+i+"</p>";
// Tout ce que tu veux comme traitement
i++; setTimeout('etape('+i+')', 200); }
-- Jérémie
Bonjour,
Je voudrais afficher l'état d'avancement des traitements effectués par un
script appelé par un formulaire, de façon à ce que l'utilisateur puisse
"suivre" les différentes étapes. Il me semblait qu'utiliser innerHTML serait
une bonne solution, mais cela ne fonctionne pas comme je l'imaginais.
En d'autres termes, dans l'exemple ci-dessous, seul le message "Fin du test"
apparaît (la fonction tempo() n'est là que pour simuler un temps de
traitement). Je ne sais pas si je m'y prends mal ou si innerHTML n'est pas
adapté à la situation ; dans ce deuxième cas quelle serait la solution ?
<html>
<head>
<script type="text/javascript">
function monTest() {
var nfo = document.getElementById("nfo");
nfo.innerHTML = "<p>Test : première étape</p>";
tempo();
nfo.innerHTML = "<p>Test : deuxième étape</p>";
tempo();
nfo.innerHTML = "<p>Fin du test</p>";
}
function tempo() {
var t1, t2, ms;
t1 = new Date();
while(1) {
t2 = new Date();
ms = t2 - t1;
if(ms > 2000) break;
}
}
</script>
</head>
<body>
<div id="nfo"><p>Cliquer sur le bouton pour lancer le test...</p></div>
<form action="javascript:monTest()">
<input type="submit" value=" Test " />
</form>
</body>
</html>
Ta fonction tempo est blocante, c'est a dire que ton script va se
dérouler d'un coup d'un seul. Si tu veux qu'il y ai un affichage pendant
ton script, il faut que ton script ne soit pas blocant. Tu peux utiliser
la fonction SetTimeout, qui repond a ton besoin. Ton script
ressemblerait a quelquechose du style
function monTest()
{
etape(1);
}
function etape(i)
{
nfo.innerHTML = "<p>Test : étape "+i+"</p>";
Je voudrais afficher l'état d'avancement des traitements effectués par un script appelé par un formulaire, de façon à ce que l'utilisateur puisse "suivre" les différentes étapes. Il me semblait qu'utiliser innerHTML serait une bonne solution, mais cela ne fonctionne pas comme je l'imaginais.
En d'autres termes, dans l'exemple ci-dessous, seul le message "Fin du test" apparaît (la fonction tempo() n'est là que pour simuler un temps de traitement). Je ne sais pas si je m'y prends mal ou si innerHTML n'est pas adapté à la situation ; dans ce deuxième cas quelle serait la solution ?
<html> <head> <script type="text/javascript"> function monTest() { var nfo = document.getElementById("nfo"); nfo.innerHTML = "<p>Test : première étape</p>"; tempo(); nfo.innerHTML = "<p>Test : deuxième étape</p>"; tempo(); nfo.innerHTML = "<p>Fin du test</p>"; } function tempo() { var t1, t2, ms; t1 = new Date(); while(1) { t2 = new Date(); ms = t2 - t1; if(ms > 2000) break; } } </script> </head> <body> <div id="nfo"><p>Cliquer sur le bouton pour lancer le test...</p></div> <form action="javascript:monTest()"> <input type="submit" value=" Test " /> </form> </body> </html>
Ta fonction tempo est blocante, c'est a dire que ton script va se dérouler d'un coup d'un seul. Si tu veux qu'il y ai un affichage pendant ton script, il faut que ton script ne soit pas blocant. Tu peux utiliser la fonction SetTimeout, qui repond a ton besoin. Ton script ressemblerait a quelquechose du style
function monTest() { etape(1); }
function etape(i) { nfo.innerHTML = "<p>Test : étape "+i+"</p>";
// Tout ce que tu veux comme traitement
i++; setTimeout('etape('+i+')', 200); }
-- Jérémie
Marco
En fait cette fonction n'est pas utilisée dans mon script (elle est remplacée par des instructions qui effectuent divers traitements), son intérêt dans l'exemple est seulement de temporiser pour voir un éventuel affichage des messages. En réalité j'ai quelque chose du genre :
<script> nfo.innerHTML = "<p>Etape 1</p>"; ... instructions effectuant les traitements de l'étape 1 ... nfo.innerHTML = "<p>Etape 2</p>"; ... instructions effectuant les traitements de l'étape 2 ... nfo.innerHTML = "<p>Fin</p>"; </script>
Ta réponse explique mon problème : si je comprends bien, le changement induit par innerHTML n'est visible qu'à la fin du déroulement du script ? Je ne peux donc pas afficher son état d'avancement sans l'interrompre et seule la ligne "<p>Fin</p>" va s'afficher...
----- Original Message ----- From: "Jérémie Fouché" Newsgroups: fr.comp.lang.javascript Sent: Monday, April 04, 2005 11:55 AM Subject: Re: Question innerHTML et formulaire
Ta fonction tempo est blocante, c'est a dire que ton script va se dérouler d'un coup d'un seul. Si tu veux qu'il y ai un affichage pendant ton script, il faut que ton script ne soit pas blocant. Tu peux utiliser la fonction SetTimeout, qui repond a ton besoin. Ton script ressemblerait a quelquechose du style
function monTest() { etape(1); }
function etape(i) { nfo.innerHTML = "<p>Test : étape "+i+"</p>";
// Tout ce que tu veux comme traitement
i++; setTimeout('etape('+i+')', 200); }
-- Jérémie
En fait cette fonction n'est pas utilisée dans mon script (elle est
remplacée par des instructions qui effectuent divers traitements), son
intérêt dans l'exemple est seulement de temporiser pour voir un éventuel
affichage des messages. En réalité j'ai quelque chose du genre :
<script>
nfo.innerHTML = "<p>Etape 1</p>";
... instructions effectuant les traitements de l'étape 1 ...
nfo.innerHTML = "<p>Etape 2</p>";
... instructions effectuant les traitements de l'étape 2 ...
nfo.innerHTML = "<p>Fin</p>";
</script>
Ta réponse explique mon problème : si je comprends bien, le changement
induit par innerHTML n'est visible qu'à la fin du déroulement du script ? Je
ne peux donc pas afficher son état d'avancement sans l'interrompre et seule
la ligne "<p>Fin</p>" va s'afficher...
----- Original Message -----
From: "Jérémie Fouché" <jeremie.fouche.enlever@tiscali.fr>
Newsgroups: fr.comp.lang.javascript
Sent: Monday, April 04, 2005 11:55 AM
Subject: Re: Question innerHTML et formulaire
Ta fonction tempo est blocante, c'est a dire que ton script va se dérouler
d'un coup d'un seul. Si tu veux qu'il y ai un affichage pendant ton
script, il faut que ton script ne soit pas blocant. Tu peux utiliser la
fonction SetTimeout, qui repond a ton besoin. Ton script ressemblerait a
quelquechose du style
function monTest()
{
etape(1);
}
function etape(i)
{
nfo.innerHTML = "<p>Test : étape "+i+"</p>";
En fait cette fonction n'est pas utilisée dans mon script (elle est remplacée par des instructions qui effectuent divers traitements), son intérêt dans l'exemple est seulement de temporiser pour voir un éventuel affichage des messages. En réalité j'ai quelque chose du genre :
<script> nfo.innerHTML = "<p>Etape 1</p>"; ... instructions effectuant les traitements de l'étape 1 ... nfo.innerHTML = "<p>Etape 2</p>"; ... instructions effectuant les traitements de l'étape 2 ... nfo.innerHTML = "<p>Fin</p>"; </script>
Ta réponse explique mon problème : si je comprends bien, le changement induit par innerHTML n'est visible qu'à la fin du déroulement du script ? Je ne peux donc pas afficher son état d'avancement sans l'interrompre et seule la ligne "<p>Fin</p>" va s'afficher...
----- Original Message ----- From: "Jérémie Fouché" Newsgroups: fr.comp.lang.javascript Sent: Monday, April 04, 2005 11:55 AM Subject: Re: Question innerHTML et formulaire
Ta fonction tempo est blocante, c'est a dire que ton script va se dérouler d'un coup d'un seul. Si tu veux qu'il y ai un affichage pendant ton script, il faut que ton script ne soit pas blocant. Tu peux utiliser la fonction SetTimeout, qui repond a ton besoin. Ton script ressemblerait a quelquechose du style
function monTest() { etape(1); }
function etape(i) { nfo.innerHTML = "<p>Test : étape "+i+"</p>";
// Tout ce que tu veux comme traitement
i++; setTimeout('etape('+i+')', 200); }
-- Jérémie
Jérémie Fouché
En fait cette fonction n'est pas utilisée dans mon script (elle est remplacée par des instructions qui effectuent divers traitements), son intérêt dans l'exemple est seulement de temporiser pour voir un éventuel affichage des messages. En réalité j'ai quelque chose du genre :
<script> nfo.innerHTML = "<p>Etape 1</p>"; ... instructions effectuant les traitements de l'étape 1 ... nfo.innerHTML = "<p>Etape 2</p>"; ... instructions effectuant les traitements de l'étape 2 ... nfo.innerHTML = "<p>Fin</p>"; </script>
Ta réponse explique mon problème : si je comprends bien, le changement induit par innerHTML n'est visible qu'à la fin du déroulement du script ? Je ne peux donc pas afficher son état d'avancement sans l'interrompre et seule la ligne "<p>Fin</p>" va s'afficher...
Tout a fait. Mais tu peux faire ce que tu veux, en conceptualisant différement ce que tu veux faire. voir mon poste précédent par exemple (mais il y a d'autres solutions).
Exemple : Etape 1 : - Affichage de "etape 1". - instructions effectuant les traitements de l'étape 1. - Appeler Etape 2 de maniere non bloquante (setTimemout).
Etape 2 : - Affichage de "etape 1". - instructions effectuant les traitements de l'étape 1. - Appeler Fin de maniere non bloquante (setTimemout).
Fin : - Affichage de "Fin".
-- Jérémie
En fait cette fonction n'est pas utilisée dans mon script (elle est
remplacée par des instructions qui effectuent divers traitements), son
intérêt dans l'exemple est seulement de temporiser pour voir un éventuel
affichage des messages. En réalité j'ai quelque chose du genre :
<script>
nfo.innerHTML = "<p>Etape 1</p>";
... instructions effectuant les traitements de l'étape 1 ...
nfo.innerHTML = "<p>Etape 2</p>";
... instructions effectuant les traitements de l'étape 2 ...
nfo.innerHTML = "<p>Fin</p>";
</script>
Ta réponse explique mon problème : si je comprends bien, le changement
induit par innerHTML n'est visible qu'à la fin du déroulement du script ? Je
ne peux donc pas afficher son état d'avancement sans l'interrompre et seule
la ligne "<p>Fin</p>" va s'afficher...
Tout a fait.
Mais tu peux faire ce que tu veux, en conceptualisant différement ce que
tu veux faire. voir mon poste précédent par exemple (mais il y a
d'autres solutions).
Exemple :
Etape 1 :
- Affichage de "etape 1".
- instructions effectuant les traitements de l'étape 1.
- Appeler Etape 2 de maniere non bloquante (setTimemout).
Etape 2 :
- Affichage de "etape 1".
- instructions effectuant les traitements de l'étape 1.
- Appeler Fin de maniere non bloquante (setTimemout).
En fait cette fonction n'est pas utilisée dans mon script (elle est remplacée par des instructions qui effectuent divers traitements), son intérêt dans l'exemple est seulement de temporiser pour voir un éventuel affichage des messages. En réalité j'ai quelque chose du genre :
<script> nfo.innerHTML = "<p>Etape 1</p>"; ... instructions effectuant les traitements de l'étape 1 ... nfo.innerHTML = "<p>Etape 2</p>"; ... instructions effectuant les traitements de l'étape 2 ... nfo.innerHTML = "<p>Fin</p>"; </script>
Ta réponse explique mon problème : si je comprends bien, le changement induit par innerHTML n'est visible qu'à la fin du déroulement du script ? Je ne peux donc pas afficher son état d'avancement sans l'interrompre et seule la ligne "<p>Fin</p>" va s'afficher...
Tout a fait. Mais tu peux faire ce que tu veux, en conceptualisant différement ce que tu veux faire. voir mon poste précédent par exemple (mais il y a d'autres solutions).
Exemple : Etape 1 : - Affichage de "etape 1". - instructions effectuant les traitements de l'étape 1. - Appeler Etape 2 de maniere non bloquante (setTimemout).
Etape 2 : - Affichage de "etape 1". - instructions effectuant les traitements de l'étape 1. - Appeler Fin de maniere non bloquante (setTimemout).
Fin : - Affichage de "Fin".
-- Jérémie
Marco
Merci pour ces infos et précieux conseils, je vais essayer d'écrire le script différemment en utilisant setTimeout.
"Jérémie Fouché" a écrit dans le message de news: d2renh$g51$
Tout a fait. Mais tu peux faire ce que tu veux, en conceptualisant différement ce que tu veux faire. voir mon poste précédent par exemple (mais il y a d'autres solutions).
Exemple : Etape 1 : - Affichage de "etape 1". - instructions effectuant les traitements de l'étape 1. - Appeler Etape 2 de maniere non bloquante (setTimemout).
Etape 2 : - Affichage de "etape 1". - instructions effectuant les traitements de l'étape 1. - Appeler Fin de maniere non bloquante (setTimemout).
Fin : - Affichage de "Fin".
-- Jérémie
Merci pour ces infos et précieux conseils, je vais essayer d'écrire le
script différemment en utilisant setTimeout.
"Jérémie Fouché" <jeremie.fouche.enlever@tiscali.fr> a écrit dans le message
de news: d2renh$g51$1@news.tiscali.fr...
Tout a fait.
Mais tu peux faire ce que tu veux, en conceptualisant différement ce que
tu veux faire. voir mon poste précédent par exemple (mais il y a d'autres
solutions).
Exemple :
Etape 1 :
- Affichage de "etape 1".
- instructions effectuant les traitements de l'étape 1.
- Appeler Etape 2 de maniere non bloquante (setTimemout).
Etape 2 :
- Affichage de "etape 1".
- instructions effectuant les traitements de l'étape 1.
- Appeler Fin de maniere non bloquante (setTimemout).
Merci pour ces infos et précieux conseils, je vais essayer d'écrire le script différemment en utilisant setTimeout.
"Jérémie Fouché" a écrit dans le message de news: d2renh$g51$
Tout a fait. Mais tu peux faire ce que tu veux, en conceptualisant différement ce que tu veux faire. voir mon poste précédent par exemple (mais il y a d'autres solutions).
Exemple : Etape 1 : - Affichage de "etape 1". - instructions effectuant les traitements de l'étape 1. - Appeler Etape 2 de maniere non bloquante (setTimemout).
Etape 2 : - Affichage de "etape 1". - instructions effectuant les traitements de l'étape 1. - Appeler Fin de maniere non bloquante (setTimemout).