admin管理员组

文章数量:1240996

I am trying to do something where I display a different incremented number every second but I just can't get the setInterval thing right.

Here is what I have

function counter() {

    var i = 0;
    while ( i < 100 ) {
        // This block will be executed 100 times.
        setInterval(console.log( 'Currently at ' + i ), 1000);
        i++; // Increment i
    }

} // End

But what I get is the console.log firing a 100 times, then repeating.

Thanks for all the help.

Mike

I am trying to do something where I display a different incremented number every second but I just can't get the setInterval thing right.

Here is what I have

function counter() {

    var i = 0;
    while ( i < 100 ) {
        // This block will be executed 100 times.
        setInterval(console.log( 'Currently at ' + i ), 1000);
        i++; // Increment i
    }

} // End

But what I get is the console.log firing a 100 times, then repeating.

Thanks for all the help.

Mike

Share Improve this question asked Oct 9, 2014 at 5:40 mdumkamdumka 1351 gold badge1 silver badge4 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 10

When you create a setInterval once, it will automatically call function (first argument) every 1000 milliseconds (second argument). So you don't need to do it inside while, just put incrementing of i inside the function (first argument).

function counter() {
  var i = 0;
  // This block will be executed 100 times.
  setInterval(function() {
    if (i == 100) clearInterval(this);
    else console.log('Currently at ' + (i++));
  }, 1000);
} // End

counter()

setInterval

Update 1

function counter() {
    var i = 0;
    var funcNameHere = function(){
        if (i == 100) clearInterval(this);
        else console.log( 'Currently at ' + (i++) );
    };
    // This block will be executed 100 times.
    setInterval(funcNameHere, 7000);
    funcNameHere();
} // End
var iter = 0;
function counter() {
    console.log('show at ' + (iter++));
    setTimeout(counter, 1000);
}

counter();
    var i=0;
    var timer;
    function increement() {
     if(i<100) {

      console.log( 'Currently at ' + i )
     } else {
      clearInterval(timer);
     }
    i++;
    }

   timer = setInterval(function() {increement()}, 1000);

http://jsfiddle/pfq7a5n3/

本文标签: Javascriptdisplay incrementing number every secondStack Overflow