请问javascript里面如何实现延时几秒的操作??
我有一个for循环语句,里面的操作我想让它隔几秒钟后再循环执行,请问有类似wait(毫秒数)这样的函数吗?请不要向我推荐setTimeout("jacode",s)这个函...
我有一个for循环语句,里面的操作我想让它隔几秒钟后再循环执行,请问有类似wait(毫秒数)这样的函数吗?
请不要向我推荐setTimeout("jacode",s)这个函数,因为我使用了发现它是开个线程独立运行,完全不受循环语句的控制。循环里面的东西照样继续循环,只有setTimeout里的jscode才会在s时间后延时执行,而且只执行一次。如果把需要循环的语句放进jscode里面去,然后把setTimeout放在for循环里的话,jscode仍然只执行一次就没有下文了,郁闷啊!请高手指点。
下面附以下我的测试代码:
<script language="javascript">
function temp(j)
{
j=j+1;
document.write(j);
}
for(i=1;i<10;i=10)
{
var delay = setTimeout("temp(i)",1000);
}
document.write(i);
</script>
运行结果是先显示10,然后再显示11,根本没有循环,我哭~~~
用for空循环肯定不行,因为这个循环在不同机器上运行的时间都不会一样,没办法准确控制。
如果用死循环然后算时间问题在于:1.一秒以内无法控制。2.因为时间计量会循环计数,比如59秒后就变成0秒了,这样就要把小时分钟秒种全换算成秒种后再计算判断,为了完全准确甚至连年月日都要全部换算进去,太麻烦了,难道js就没有简单一点的方法吗?我再哭~~~
呵呵,不好意思,那个i=10是改了个东西没改回来,应该是i++,呵呵不好意思啊~~~
呵呵,谢谢后面两位的回答,两位基本都能解决循环显示i的问题了。可惜只能采纳一个答案,所以就先来先采吧呵呵。不过我还是有些问题,我想循环的其实不只是显示一个数字,而是循环任何操作,上面的代码只是个例子罢了。但是我改了改两位的代码,发现实现循环的关键是document.getElementById("div1").innerText=j; 这个句子,如果我把它改成了document.write(j)就没有循环效果了,这是为什么啊?照理说循环效果应该是递归产生的啊!那如何能使“jscode”这段代码的延时循环呢?谢谢了! 展开
请不要向我推荐setTimeout("jacode",s)这个函数,因为我使用了发现它是开个线程独立运行,完全不受循环语句的控制。循环里面的东西照样继续循环,只有setTimeout里的jscode才会在s时间后延时执行,而且只执行一次。如果把需要循环的语句放进jscode里面去,然后把setTimeout放在for循环里的话,jscode仍然只执行一次就没有下文了,郁闷啊!请高手指点。
下面附以下我的测试代码:
<script language="javascript">
function temp(j)
{
j=j+1;
document.write(j);
}
for(i=1;i<10;i=10)
{
var delay = setTimeout("temp(i)",1000);
}
document.write(i);
</script>
运行结果是先显示10,然后再显示11,根本没有循环,我哭~~~
用for空循环肯定不行,因为这个循环在不同机器上运行的时间都不会一样,没办法准确控制。
如果用死循环然后算时间问题在于:1.一秒以内无法控制。2.因为时间计量会循环计数,比如59秒后就变成0秒了,这样就要把小时分钟秒种全换算成秒种后再计算判断,为了完全准确甚至连年月日都要全部换算进去,太麻烦了,难道js就没有简单一点的方法吗?我再哭~~~
呵呵,不好意思,那个i=10是改了个东西没改回来,应该是i++,呵呵不好意思啊~~~
呵呵,谢谢后面两位的回答,两位基本都能解决循环显示i的问题了。可惜只能采纳一个答案,所以就先来先采吧呵呵。不过我还是有些问题,我想循环的其实不只是显示一个数字,而是循环任何操作,上面的代码只是个例子罢了。但是我改了改两位的代码,发现实现循环的关键是document.getElementById("div1").innerText=j; 这个句子,如果我把它改成了document.write(j)就没有循环效果了,这是为什么啊?照理说循环效果应该是递归产生的啊!那如何能使“jscode”这段代码的延时循环呢?谢谢了! 展开
4个回答
展开全部
<html>
<head>
<script language="javascript">
j=10;
function func(){
document.getElementById("div1").innerText=j;
j++;
setTimeout("func()",1000);
}
</script>
</head>
<body onload="func();">
<div id="div1"></div>
</body>
可能是我理解能力有限,不知道这个答案满意吗?
能否解释一下for(i=1;i<10;i=10)这是什么意思?i=1,i=10
<head>
<script language="javascript">
j=10;
function func(){
document.getElementById("div1").innerText=j;
j++;
setTimeout("func()",1000);
}
</script>
</head>
<body onload="func();">
<div id="div1"></div>
</body>
可能是我理解能力有限,不知道这个答案满意吗?
能否解释一下for(i=1;i<10;i=10)这是什么意思?i=1,i=10
展开全部
看看偶滴理解能力如何~
<input id="o">
<script language="javascript">
i=1;
function temp(){
document.getElementById("o").value=i;
i++;
if(i<11){
var val=setTimeout("temp()",1000);
}
else
{
clearTimeout(val)
i=1
}
}
setInterval("temp()",12000)
window.onload=temp
</script>
<input id="o">
<script language="javascript">
i=1;
function temp(){
document.getElementById("o").value=i;
i++;
if(i<11){
var val=setTimeout("temp()",1000);
}
else
{
clearTimeout(val)
i=1
}
}
setInterval("temp()",12000)
window.onload=temp
</script>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在for里面空循环一会呗,只要循环的次数够大就能实现延时的效果。
或者在for里面放个str=now()然后就是个while,当while的条件为当前时间为str加上几秒后,就break,这样不也是延时效果了。
或者在for里面放个str=now()然后就是个while,当while的条件为当前时间为str加上几秒后,就break,这样不也是延时效果了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sleep一会
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询