Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在setTimeout函数中获得精确值_Javascript_Jquery_Html - Fatal编程技术网

Javascript 如何在setTimeout函数中获得精确值

Javascript 如何在setTimeout函数中获得精确值,javascript,jquery,html,Javascript,Jquery,Html,简单的问题 for (var i = 0; i < 5; i++) { setTimeout(function () { alert(i) }, 3000); } (变量i=0;i

简单的问题

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

setTimeout(函数(){alert(i)},3000);
}
如何使用i的精确值警报5次

它只给出5次“5”

我需要这样的结果 0 1. 2. 3. 4

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

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

   (function(j) {

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

   }(i));
}
(变量i=0;i<5;i++)的

(职能(j){
setTimeout(函数(){alert(j)},3000);
}(i) );
}

setTimout是异步的,因此当它执行循环时,循环早已完成,
i
的值已更改为
5
,因此您需要将其锁定。

您可以使用
setInterval
替代
setTimeout

试试看


@选民:如果你能说明改正我错误的原因,我将不胜感激。!谢谢你。
var xCnt = 0;
var xInterval = setInterval(function()
                              {
                                xCnt +=1;  
                                alert(xCnt);

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