为什么这种写法,js的setTimeout只执行一次?
functiondelayURL(url,time){Time();//如果改为setTimeout("Time()",1000)就可以了??为什么??setTimeou...
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'); 展开
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'); 展开
展开全部
setTimeout是延迟执行,只执行一次,不是定时器
多次间断执行要用setInterval
var timer = setInterval( function(){}, 1000);
取消用clearInterval(timer);
多次间断执行要用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毫秒执行的快了
应该是这样
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我试了你的代码,可以正常跳转啊
追问
看到time里面还有一个循环了吗?我跳转是可以的,其中有一个倒计时的功能我是通过settimeout 里面再对settimeout进行调用实现循环,如果有setTimeout("Time()",1000)就可以实现3,2,1,0这样的。如果变成time()就不出现3,2,1只有3,time函数只用了一次。
追答
奇怪,我试了会3,2,1,0倒计时的
var t=setInterval("jishi()",1000);
var t1=3;
function jishi(){
document.getElementById("second").innerHTML=t1;
if(t1==0){
location.replace("url");
}
t1--;
}
你用这种方法试下
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询