Afficher ou non une div.

Afficher ou non une div. - HTML/CSS - Programmation

Marsh Posté le 10-10-2007 à 10:57:50    

Bonjour,
 
J'ai un petit souci, lors du click sur un bouton, j'aimerais ne plus afficher une div et réaliser ensuite un traitement. J'ai donc fait ceci (sur l'évènement onClick, j'appelle la méthode "maFonction()" ).
 
Seulement, la div ne disparait que lorsque ma méthode se termine, donc après le traitement. J'aimerais donc savoir s'il est possible que ma div disparaisse avant le traitement ? Si oui, comment faire ?
 
Merci d'avance.  
 
 
 
function maFonction() {
 
myDiv = document.getElementById("maDiv" );
myDiv.style.display = "none";
 
[...]
//Traitement javascript
[...]
 
}
 
 

Reply

Marsh Posté le 10-10-2007 à 10:57:50   

Reply

Marsh Posté le 10-10-2007 à 11:09:34    

le plus simple est de faire un truc style :

Code :
  1. function maFonction() {
  2. myDiv = document.getElementById("maDiv" );
  3. myDiv.style.display = "none";
  4. setTimeout('Traitement()', 100)
  5. }
  6. function Traitement() {
  7. [...]
  8. //Traitement javascript
  9. [...]
  10. }


qui appele ton traitement 1/10s apres avoir cache ton div...

Reply

Marsh Posté le 10-10-2007 à 11:15:11    

Je souhaite utiliser ce systeme pour afficher un sablier lors des traitements assez longs. Si en plus, je dois faire un timeOut, niveau perf ce n'est pas terrible :( Mon but étant de gagner en perf par rapport à l'ancienne gestion du sablier que nous avons) ;)  
 
N'y aurait-il pas un moyen plus performant ?
 

Reply

Marsh Posté le 10-10-2007 à 11:24:32    

VOila deux fonctions, une affichant le div et l'autre le masquant.
 
Tu n'as qu'à appeler la fonction afficher pour faire réapparaitre quand tu le souhaites ton div :
 

Code :
  1. function afficher()
  2. {
  3.  document.getElementById("tonDiv" ).style.visibility="visible";
  4.  document.getElementById("tonDiv" ).style.display='block';
  5. }
  6. function masquer()
  7. {
  8.  document.getElementById("tonDiv" ).style.visibility="hidden";
  9.  document.getElementById("tonDiv" ).style.display='none';
  10. }

Reply

Marsh Posté le 10-10-2007 à 11:31:03    

4bis a écrit :

Je souhaite utiliser ce systeme pour afficher un sablier lors des traitements assez longs. Si en plus, je dois faire un timeOut, niveau perf ce n'est pas terrible :( Mon but étant de gagner en perf par rapport à l'ancienne gestion du sablier que nous avons) ;)  
 
N'y aurait-il pas un moyen plus performant ?
 


Franchement si tu descend le délais à 1, 1 millième de seconde c'est négligeable. non?

turinatas a écrit :

VOila deux fonctions, une affichant le div et l'autre le masquant.
 
Tu n'as qu'à appeler la fonction afficher pour faire réapparaitre quand tu le souhaites ton div :
 

Code :
  1. function afficher()
  2. {
  3.  document.getElementById("tonDiv" ).style.visibility="visible";
  4.  document.getElementById("tonDiv" ).style.display='block';
  5. }
  6. function masquer()
  7. {
  8.  document.getElementById("tonDiv" ).style.visibility="hidden";
  9.  document.getElementById("tonDiv" ).style.display='none';
  10. }



Toi, t'as pas lu la question.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 10-10-2007 à 12:09:31    

dwogsi a écrit :


Franchement si tu descend le délais à 1, 1 millième de seconde c'est négligeable. non?


 

dwogsi a écrit :


Toi, t'as pas lu la question.


 
Je viens d'essayer 1 millième de secondes, ca fonctionne correctement, merci.  
 
Seulement, pour comprendre, comment cela se fait qu'en laissant un temps comme ça, ca fait disparaitre la div ? C'est qu'on alloue 1/1000 de secondes au processeur, et pendant ce temps, il peut executer d'autres tâches ?

Reply

Marsh Posté le 10-10-2007 à 12:14:00    

A mon avis c'est surtout une histoire de rafraichissement de l'affichage.
Histoire de ne pas rafraichir 15 fois pendant le traitement, on raffraichit qu'une seul fois à la fin du traitement.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 10-10-2007 à 14:47:03    

Mouais, ou histoire d'eviter qu'un triso ne lance 300000 fois le traitement en cliquant sur un bouton...

Reply

Marsh Posté le 10-10-2007 à 14:50:33    

fred777888999 a écrit :

Mouais, ou histoire d'eviter qu'un triso ne lance 300000 fois le traitement en cliquant sur un bouton...


Vous lisez avant de poster?
Parceque là je vois pas vraiment le rapport entre ce que tu dis et ce dont on parle....


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 10-10-2007 à 14:53:24    

Ca necessite effectivement un nimimum d'imagination (coller le bouton qui lance le traitement dans le div a cacher/masquer) et de lire le post precedent d'un certain dwogsi qui a visiblement du mal a se lire lui meme ;)

Reply

Marsh Posté le 10-10-2007 à 14:53:24   

Reply

Marsh Posté le 11-10-2007 à 17:28:36    

fred777888999 a écrit :

Ca necessite effectivement un nimimum d'imagination (coller le bouton qui lance le traitement dans le div a cacher/masquer) et de lire le post precedent d'un certain dwogsi qui a visiblement du mal a se lire lui meme ;)


 
Moi non plus je ne vois pas trop le rapport avec un bouton.
 
Si tu cliques sur un bouton alors que le traitement n'est pas terminée, avec un tel processus, ca ne relancera pas le traitement une nouvelle fois.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed