2017-12-29 1 views
-2

Ich habe kleines Problem mit meinem Skriptjede Aktion, wenn die Variable in Intervallfunktion Wert hat

Sie sieht wie folgt aus:

i = 0; 
 

 
setInterval(function() { 
 
    
 
if(i < 100) { 
 
    i++; 
 
} 
 
    
 
}, 1000); 
 

 
if(i == 100) { 
 
    alert("done"); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Aber Alarm funktioniert nicht nach dem Inkrementieren zu 100. Warum? Wie kann ich das machen?

+3

Der 'alert()' Aufruf muss ** in ** dem Intervall-Handler enthalten sein, und er sollte auch den Timer abbrechen. – Pointy

+1

setInterval ist asynchron, also wird 'if (i == 100)' zuerst geprüft, bevor es sogar auf 100 erhöht wird. Also, setze diesen Prüfcode in setInterval. –

+0

Sie können sich https://stackoverflow.com/questions/3583724/how-do-i-add-a-delay-in-a-javascript-loop ansehen –

Antwort

3

Wegen if(i < 100) das sagt, bis das i 99 oder weniger ist.

Wenn Sie bis 100 erhöhen müssen, verwenden Sie if(i <= 100), was 100 oder weniger ist.

0

Wenn if(i == 100) Zustand wird der Wert von i ausgeführt ist 0, was innerhalb der setInterval-Funktion erhöht wird, aber keine Möglichkeit if(i == 100) kennt diesen Zustand im Inneren der setTimeout Funktion that.So setzen

var i = 0; 
 

 
var _int = setInterval(function() { 
 

 
    if (i < 100) { 
 
    i++; 
 
    } 
 
    if (i == 100) { 
 
    alert("done"); 
 
    clearInterval(_int) 
 
    } 
 

 
}, 40);

Verwandte Themen