Question

J'utilise setInterval pour vérifier si un p (paragraphe html) a une certaine valeur textuelle. si c'est le cas, je veux effacer l'intervalle et continuer le flux de code. J'utilise ceci dans un plugin jQuery, donc si le paragraphe a une valeur textuelle, je veux effacer l'intervalle, puis continuer avec une fonction de rappel. donc j'ai essayé quelque chose comme ça:

var checkTextValue = setInterval(function(){
                          var textVal = $('p').text();
                          if(textVal == 'expectedValue'){
                              clearInterval(checkTextValue);
                              callback();
                          } 
                     },10);

et la fonction de rappel est une simple alerte. Mon problème est que l'alerte est appelée à l'infini. Comment puis-je écrire mon code pour le faire correctement? Merci.

Était-ce utile?

La solution

Utilisez setTimeout au lieu de setInterval.

Quelque chose comme:

var checkTextValue = setTimeout(function() {
    var textVal = $('p').text();
    if (textVal == 'expectedValue'){
        callback();
    } else {
        setTimeout(arguments.callee, 10);
    }
},10);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top