Alright, first ever stack overflow question. I hope I do this right.
I'm trying to run this code:
for(var i = 1; i < 17; i++){
console.log("for loop runs. i is " + i);
setTimeout(function(){
console.log("setTimeout runs. i is " + i);
if(i < 3){
$( ".example1" ).append( i );
$( ".example2" ).append( i );
$( ".example3" ).append( i );
$( ".example4" ).append( i );
$( ".example5" ).append( i );
}
else if(i<5){
$( ".example1" ).append( i );
$( ".example2" ).append( i );
$( ".example3" ).append( i );
$( ".example5" ).append( i );
}
else if(i<11){
$( ".example1" ).append( i );
$( ".example2" ).append( i );
$( ".example3" ).append( i );
}
else if(i<15){
$( ".example1" ).append( i );
$( ".example3" ).append( i );
}
else if(i<17){
$( ".example1" ).append( i );
}
},200);
} //end for loop
And I'm getting this output in the console:
for loop runs. i is 2
for loop runs. i is 3
for loop runs. i is 4
for loop runs. i is 5
for loop runs. i is 6
for loop runs. i is 7
for loop runs. i is 8
for loop runs. i is 9
for loop runs. i is 10
for loop runs. i is 11
for loop runs. i is 12
for loop runs. i is 13
for loop runs. i is 14
for loop runs. i is 15
for loop runs. i is 16
(16) setTimeout runs. i is 17 // <---- runs 16 times
So the for
loop runs and increments up to 17, then setTimeout
runs 16 times. I don't understand what's going on here.