accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

implémenter une function "execAfter"

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.lang.javascript ] 

Retour : Accueil du site fr comp lang javascript   charte stats de ce groupe


  Sujet:   implémenter une function "execAfter"  
 De: unbewusst.s...@weltanschauung.com.invalid (Une Bév ue)
 Groupes: fr.comp.lang.javascript
 Organisation: Service de news de lacave.net
 Date: 26. Apr 2008, 19:58:52
sur certaines pages, j'efface le contenu d'un <pre />, ligne après ligne
(comptage des "\n") avec une temporisation (feedback utilisateur sinon
ça va trop vite est on a l'impression que rien n'a changé)

et j'aimerais lancer qqc quand c'est fini.

j'ai essayé avec window.setTimeout, sans succès, firefox me donne une
erreur de syntaxe, c'est aprox. :

function execAfter(condition,action,param,count){
  if(condition||count>20){
    action(param);
  } else {
    count++;

window.setTimeout("execAfter("+condition+","+action+","+param+","+count+
")",100);
  }
}

firefox me dit que la syntaxe est incorrecte, ça vient sans doute de
l'argument 'action' qui est une fonction ?

donc, question : est-il possible de passer en paramètre une function
dans un setTimeout ?

je tiens à passer cette function par variable car ça me permettrait
d'avoir une function "execAfter" générique...

euh, bien sûr "condition" varie au cours du temps, je veux dire
généralement quand je lance "execAfter" condition est à false et passe
ensuite à true...

pour être + précis, je voudrais généraliser, paramétriser, cette
fonction, qui, elle 'marche' :

function wipe(){
  // décomposition du contenu de <pre /> en lignes :
  var lines=log.innerHTML.split("\n");//alert(lines.length);
  // si plus d'une ligne, on continue à effacer : 
  if(lines.length>1){
    wipe_ended=false;
    lines.pop(); // on vire la dernière ligne
    log.innerHTML=''; // effacement de tout le <pre />
    // ré-écriture du <pre /> dernière ligne en moins :
    log.appendChild(document.createTextNode(lines.join("\n")));
    // temporisation pour feedback utilisateur :
    window.setTimeout("wipe()",100);
  } else {
    // plus rien à effacer dans le <pre />
    wipe_ended=true;
    // on peut donc réécrire qqc de nouveau (ou identique) dans le <pre
/>
    log.appendChild(document.createTextNode(reportText));
  }
}

-- 
Une Bévue


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)