为啥这种写法,js的setTimeout只执行一次?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥这种写法,js的setTimeout只执行一次?相关的知识,希望对你有一定的参考价值。
function delayURL(url, time)
Time();//如果改为setTimeout("Time()",1000)就可以了??为什么??
setTimeout("top.location.href='" + url + "'", time);
var time = 3;
function Time()
time = time-1;
document.getElementById('second').innerHTML=time;
setTimeout("Time()",1000);
delayURL('article.jsp','3000');
多次间断执行要用setInterval
var timer = setInterval( function(), 1000);
取消用clearInterval(timer);追问
看到time里面还有一个循环了吗?我跳转是可以的,其中有一个倒计时的功能我是通过settimeout 里面再对settimeout进行调用实现循环,如果有setTimeout("Time()",1000)就可以实现3,2,1,0这样的。如果变成time()就不出现3,2,1只有3,time函数只用了一次。
追答哦
我认真看了下
首先js执行delayURL('article.jsp','3000');
执行到了
delayURL()
但是先执行了Time();
time由3变为2再变为1再变为0,染后变为-1……
你应该在Time()函数里加个判断
if(time==0)
top.location.href=url;
你说delayURL函数里改为
setTimeout("Time()",1000);
setTimeout("top.location.href='" + url + "'", time);
可以
其实就可以
因为
setTimeout("Time()",1000);
这句指延迟1000毫秒执行Time函数
setTimeout("top.location.href='" + url + "'", time);
这句指延迟3毫秒执行"top.location.href='" + url + "'",命令
当然3毫秒执行的快了
应该是这样
以上是关于为啥这种写法,js的setTimeout只执行一次?的主要内容,如果未能解决你的问题,请参考以下文章
settimeout和setInterval为啥连续调就不准了