javascript如何延迟执行一个函数

zhouyu2005 2009-08-18 08:43:45
javascript如何延迟执行一个函数?
我要在for循环里延迟1秒执行一个函数,用了settimeout,它只能初次延迟,以后的循环就延迟了,setInterval也不行,请问哪位高手帮忙解决
比如:
function a()
{
for(var i=0;i<10;i++)
{
//我要在这里延迟1秒执行函数b()10次,也就是10秒执行完这个for循环
}
}
function b()
{
alert("b");
}
...全文
1391 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookee 2009-08-18
  • 打赏
  • 举报
回复

<script>
var tid;
var n = 0;
function aa()
{
var k = "bbbb";
tid = setTimeout("bb('" + k +"')", 2000);
}
function bb(j)
{
alert(j);
if(tid!=null){clearTimeout(tid); tid=null;}
n++
if(n<5) tid = setTimeout("bb('" + j +"')", 2000);
}
aa()
</script>
zhouyu2005 2009-08-18
  • 打赏
  • 举报
回复
<script>
function aa()
{
for(var i=0;i <5;i++)
{
var k = "bbbb";
setTimeout("bb(" + k +")", 2000 * (i + 1));

}


}
function bb(j)
{
alert(j);
}
</script>
我这样还是不行呀,它提示我“bbbb”未定义
zhouyu2005 2009-08-18
  • 打赏
  • 举报
回复
6楼的程序会提示“是否提示停止运行此脚本”
silentwins 2009-08-18
  • 打赏
  • 举报
回复
setTimeout("bb(" + k +")", 2000 * (i + 1)) 
zhouyu2005 2009-08-18
  • 打赏
  • 举报
回复
我想问下三楼的,为什么这样不行,我怎样加参数呢?
function aa()
{
for(var i=0;i <5;i++)
{
var k = "bbbb";
setTimeout("bb(k)", 2000 * (i + 1))

}


}
function bb(j)
{
alert(j);
}
yixianggao 2009-08-18
  • 打赏
  • 举报
回复
alert 会影响脚本执行,还是用 div 显示吧

L@_@K
	<div id="divOutput"></div>
<script type="text/javascript">
<!--
function a()
{
for(var i=1; i<=10; i++)
window.setTimeout("b("+i+")", 1000*i);
}

function b(num)
{
var t = new Date();
document.getElementById("divOutput").innerHTML += ("b"+num+" : "+t.toLocaleTimeString()+"<br />");
}

a();
//-->
</script>
maosenmin 2009-08-18
  • 打赏
  • 举报
回复
var ctroltime;
function MyLoad()
{
ctroltime=setTimeout("hh()",3000); //每隔3s执行hh()
}

hh(){
……
}
silentwins 2009-08-18
  • 打赏
  • 举报
回复
<script>
function a()
{
for(var i=0;i <10;i++)
{
pause(1000);
b();
}
}
function b()
{
alert("b");
}

function pause(numberMillis) {
var now = new Date();
var exitTime = now.getTime() + numberMillis;
while (true) {
now = new Date();
if (now.getTime() > exitTime)
return;
}
}

</script>
<button onclick="a()">aa</button>
hookee 2009-08-18
  • 打赏
  • 举报
回复
我上面错了,改下
var tid;
var n = 0
function a()
{
tid = setTimeout("b()",1000);
}
function b()
{
alert("b");
n++;
if(tid!=null){clearTimeout(tid);tid=null;}
if(n<10) tid = setTimeout("b()",1000);
}


hookee 2009-08-18
  • 打赏
  • 举报
回复

var tid;
var n = 0
function a()
{
n++;
if(tid!=null){clearTimeout(tid);tid=null;}
if(n<=10) tid = setTimeout("b()",1000);
}
function b()
{
alert("b");
}
sd5816690 2009-08-18
  • 打赏
  • 举报
回复
function a()
{
for(var i=0;i <10;i++)
{
setTimeout("b()", 1000 * (i + 1))
}
}
tiantianzzz 2009-08-18
  • 打赏
  • 举报
回复

~function(){
var i=1;
function b(){
alert("b");
if(i<10){
setTimeout(b,1000);
i++;
}
}
setTimeout(b,1000);
}();

aperson111 2009-08-18
  • 打赏
  • 举报
回复
用了serInterval还是不要用for循环吧?
var time = setInterval('b()',1000);//这样1秒执行一次b
var count = 0;
function b() {
alert('b');
count++;
if(count == 9) {
clearInterval(time);
}
}

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧