У меня есть сценарий обратного отсчета, который перенаправляется в файл. Он имеет цикл в нем, и переменная становится неопределенной, когда она запускается один раз.Javascript unifined переменная после цикла
Как я могу сохранить переменную 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)
}
}
Какая переменная не определена? – JJJ
** Никогда ** передайте строку 'setInterval()' или 'setTimeout()'. Это так же плохо, как использование 'eval()', и это приводит к нечитаемому и, возможно, небезопасному коду, как только вы используете переменные, так как вам нужно вставить их в строку вместо передачи фактической переменной. Правильным решением является 'setInterval (function() {/ * ваш код *)}, msecs);'. То же самое относится к 'setTimeout()'. Если вы просто хотите вызвать одну функцию без каких-либо аргументов, вы также можете передать имя функции напрямую: 'setInterval (someFunction, msecs);' (обратите внимание, что в имени функции нет ** ** '()') – ThiefMaster
Переназначение URL-адреса, которое я использую в функции дотимера. – 9edge