如何在setTimeout函数中获取精确值

时间:2013-12-31 13:27:02

标签: javascript jquery html

简单的问题......

for (var i = 0; i < 5; i++) {            
   setTimeout(function () { alert(i) }, 3000);
}

如何使用i的确切值提醒5次。

它只给出“5”5次。

我需要它的结果 0 1 2 3 4

2 个答案:

答案 0 :(得分:2)

使用closure使变量的值保持在立即调用的函数的新范围内

for (var i = 0; i < 5; i++) {            

   (function(j) {

       setTimeout(function () { alert(j) }, 3000);

   }(i));
}

setTimout是异步的,所以当它执行循环时很久就完成了,并且i的值已经更改为5,所以你需要将其锁定。

答案 1 :(得分:0)

您可以使用setInterval替代setTimeout

尝试,

var xCnt = 0;
var xInterval = setInterval(function()
                              {
                                xCnt +=1;  
                                alert(xCnt);

                                  if(xCnt == 5)
                                    { 
                                       clearInterval(xInterval); 
                                    }
                              }, 3000);

DEMO