在这里,我有一个简单的倒计时功能,可在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/

10-13 09:09