我有一个倒计时脚本,可以重定向到一个文件。它有一个循环,当变量运行一次时变量就会被解开。
如何保持url变量保持其值?
<a id="" onClick="doTimer('http://www.domain.com/downloadfile.php?photo=foo.jpg')" href="#"><button id="download">Download this photo</button></a>
var timer_is_on=0;
var countdownfrom=5
var currentsecond=document.getElementById('countdown').innerHTML=countdownfrom+1
function countredirect(url)
{
if (currentsecond!=1)
{
currentsecond-=1
document.getElementById('countdown').innerHTML = currentsecond;
}
else
{
window.location=url
return
}
setTimeout("countredirect()",1000)
}
function doTimer(url)
{
if(!timer_is_on)
{
document.getElementById('download').innerHTML="Your download starts in <span id=\"countdown\"></span>seconds";
timer_is_on=1;
countredirect(url)
}
}
答案 0 :(得分:5)
setTimeout("countredirect()",1000)
您没有将任何参数传递给countredirect
函数。
将字符串传递给setTimeout
和setInterval
通常是一个坏主意(给你各种范围问题)。传递一个函数:
setTimeout(function() {
countredirect(url);
}, 1000);
在较新的浏览器中(或使用shim),您也可以使用.bind()
[MDN](bind
返回新功能):
setTimeout(countredirect.bind(null, url), 1000);
答案 1 :(得分:0)
重新安排功能的另一种方法:
setTimeout(countredirect.bind(null, url), 1000);