在这里,我有一个简单的倒计时功能,可在5秒后重定向用户。
<script type="text/javascript">
var timer = 5;
var counter = document.getElementById("countdown");
function countdown(target)
{
counter.innerHTML = timer--;
if (timer >= 0)
{
setTimeout(function () {
countdown();
}, 1000);
}
else
{
// Redirect the user
console.log(target); // Outputs "undefined" after 5 seconds
if (!typeof target === "undefined")
{
window.location.href = target;
}
}
};
var target = "/account/";
countdown(target);
</script>
问题是,当经过5秒钟并且
window.location.href
进行重定向时,“ target”变量未定义,我不确定为什么会发生这种情况。我研究并尝试了各种解决方案,甚至以设置“计时器”和“计数器”的方式设置“目标”,但没有一个起作用。我的目标是在每个函数实例上设置一个不同的“目标”。
更新:将
countdown();
设置为countdown(target);
修复了“未定义”问题,但是window.location.href
对象仍未重定向到target
变量值,该怎么办才能解决此问题? 最佳答案
您需要在setTimeout中将目标传递给倒数计时
function countdown(target)
{
counter.innerHTML = timer--;
if (timer >= 0)
{
setTimeout(function () {
countdown(target);
}, 1000);
}
else
{
// Redirect the inactive user to the homepage
console.log(target); // Outputs "undefined" after 5 seconds
if (!typeof target === "undefined")
{
window.location.href = target;
}
}
};
关于javascript - JavaScript:否则未定义内部变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30138975/