Javascript,setInterval在while循环后启动?怎么让它在循环中开始?

时间:2013-08-17 23:55:20

标签: javascript jquery while-loop alert setinterval

我有一段javascript:

<script>
  var i=1;
  while(i<10){
    setInterval(function(){
      alert(i);
    },1);
    i++;
  }
</script>

它提醒了10号而不是1号到10号。我希望setInterval提醒1到10号,并保持1到10的警报。

3 个答案:

答案 0 :(得分:1)

神奇的词语是闭包和范围:

<script>
   var i=1;
   while(i<10){
      (function(j) {
          setTimeout(function(){
              alert(j);
          },1);
      })(i);

      i++;
   }
</script>

简而言之,while循环在i的值被警告之前结束 也不是小提琴的顺序或缺乏:

FIDDLE

答案 1 :(得分:0)

发生的事情是你要求计算机每毫秒运行一次嵌套的内部函数。并且你要求连续十次这样做,所以到最后,计算机应该每秒发送一次警报,每秒一次。我很惊讶它没有占用所有CPU并消耗所有内存并导致致命错误。

这将持续到您致电clearInterval(),或直到窗口关闭。

http://www.w3schools.com/jsref/met_win_setinterval.asp

答案 2 :(得分:0)

这是猜测,但这是你想要的吗?

setInterval(function(){
  var i=1;
  while(i<=10){
    alert(i);
    i++;
  }
 },1);