Javascript JS中的倒计时

Javascript JS中的倒计时,javascript,jquery,countdown,Javascript,Jquery,Countdown,我试图在一个register.php页面上设置一个倒计时,显示一个计时器,从3秒开始,一秒一秒地倒计时,最后重定向到另一个页面。 但是,当我在浏览器中加载页面时,我会立即重定向到另一个页面。有人能帮我找出原因吗 The registration was successful, you will be redirected in <span id="num"></span> seconds. <script> $(document

我试图在一个register.php页面上设置一个倒计时,显示一个计时器,从3秒开始,一秒一秒地倒计时,最后重定向到另一个页面。 但是,当我在浏览器中加载页面时,我会立即重定向到另一个页面。有人能帮我找出原因吗

    The registration was successful, you will be redirected in <span id="num"></span> seconds.
    <script>
        $(document).ready(function (){
            for (var i = 3; i>0; i--) {
                setTimeout(function () {
                    $("#num").html(i);
                },1000);
            }
            window.location.replace("login.html");
        });
    </script>
注册成功,您将在几秒钟内被重定向。
$(文档).ready(函数(){
对于(变量i=3;i>0;i--){
setTimeout(函数(){
$(“#num”).html(i);
},1000);
}
window.location.replace(“login.html”);
});
正确的方法:

$(document).ready(function () {
    var i = 3;
    $("#num").html(i);
    setInterval(function () {
        if(i==0){window.location.replace("login.html");}
        i--;
        $("#num").html(i > -1 ? i : 0);
    }, 1000);

});
setInterval将每秒执行一次函数,但对于您拥有的代码,您只需将
setTimeout
设置为在一秒钟后执行,但它不会阻止您进一步循环。因此,您立即设置了三个超时,然后重新定向。

正确的方式:

$(document).ready(function () {
    var i = 3;
    $("#num").html(i);
    setInterval(function () {
        if(i==0){window.location.replace("login.html");}
        i--;
        $("#num").html(i > -1 ? i : 0);
    }, 1000);

});
setInterval将每秒执行一次函数,但对于您拥有的代码,您只需将
setTimeout
设置为在一秒钟后执行,但它不会阻止您进一步循环。因此,您立即设置了三个超时,然后重新定向。

正确的方式:

$(document).ready(function () {
    var i = 3;
    $("#num").html(i);
    setInterval(function () {
        if(i==0){window.location.replace("login.html");}
        i--;
        $("#num").html(i > -1 ? i : 0);
    }, 1000);

});
setInterval将每秒执行一次函数,但对于您拥有的代码,您只需将
setTimeout
设置为在一秒钟后执行,但它不会阻止您进一步循环。因此,您立即设置了三个超时,然后重新定向。

正确的方式:

$(document).ready(function () {
    var i = 3;
    $("#num").html(i);
    setInterval(function () {
        if(i==0){window.location.replace("login.html");}
        i--;
        $("#num").html(i > -1 ? i : 0);
    }, 1000);

});

setInterval将每秒执行一次函数,但对于您拥有的代码,您只需将
setTimeout
设置为在一秒钟后执行,但它不会阻止您进一步循环。因此,您立即设置了三个超时,然后进行了重定向。

由于这是一个重定向页面,您可能不希望为这段代码包含整个jQuery库:

var remaining = 3;

function countdown() {
    document.getElementById('num').innerHTML = remaining;
    if (!remaining--) {
        window.location.replace("login.html");
    }
    setTimeout(countdown, 1000);
}

window.onload = countdown;

由于这是一个重定向页面,您可能不想为这段代码包含整个jQuery库:

var remaining = 3;

function countdown() {
    document.getElementById('num').innerHTML = remaining;
    if (!remaining--) {
        window.location.replace("login.html");
    }
    setTimeout(countdown, 1000);
}

window.onload = countdown;

由于这是一个重定向页面,您可能不想为这段代码包含整个jQuery库:

var remaining = 3;

function countdown() {
    document.getElementById('num').innerHTML = remaining;
    if (!remaining--) {
        window.location.replace("login.html");
    }
    setTimeout(countdown, 1000);
}

window.onload = countdown;

由于这是一个重定向页面,您可能不想为这段代码包含整个jQuery库:

var remaining = 3;

function countdown() {
    document.getElementById('num').innerHTML = remaining;
    if (!remaining--) {
        window.location.replace("login.html");
    }
    setTimeout(countdown, 1000);
}

window.onload = countdown;


setTimeout
不会阻止脚本执行,并且
for
循环会在纳秒内执行,之后会设置一个新位置。我对javascript不熟悉,所以我想我可以使用sleep()方法,但我想这不是正确的方法。是的,这将是一个不正确的方法,因为JS中没有
sleep
方法。首先,您必须使用
i*1000
作为延迟值,然后创建一个计数器来计算已经过去了多少秒。然后当遇到
3
时,重定向。
setTimeout
不会阻止脚本执行,并且
for
循环会在纳秒内执行,之后会设置一个新位置。我是javascript新手,所以我想我可以像sleep()方法一样使用,但我想这不是正确的方法。是的,这将是一个不合适的方法,因为JS中没有
sleep
方法。首先,您必须使用
i*1000
作为延迟值,然后创建一个计数器来计算已经过去了多少秒。然后当遇到
3
时,重定向。
setTimeout
不会阻止脚本执行,并且
for
循环会在纳秒内执行,之后会设置一个新位置。我是javascript新手,所以我想我可以像sleep()方法一样使用,但我想这不是正确的方法。是的,这将是一个不合适的方法,因为JS中没有
sleep
方法。首先,您必须使用
i*1000
作为延迟值,然后创建一个计数器来计算已经过去了多少秒。然后当遇到
3
时,重定向。
setTimeout
不会阻止脚本执行,并且
for
循环会在纳秒内执行,之后会设置一个新位置。我是javascript新手,所以我想我可以像sleep()方法一样使用,但我想这不是正确的方法。是的,这将是一个不合适的方法,因为JS中没有
sleep
方法。首先,您必须使用
i*1000
作为延迟值,然后创建一个计数器来计算已经过去了多少秒。然后在遇到
3
时,重定向。挑剔:这将在显示初始值3之前等待一秒钟(总倒计时时间将结束为4秒,给予或接受)。挑剔:这将在显示初始值3之前等待一秒钟(总倒计时时间将结束为4秒,给予或接受).吹毛求疵:这将在显示初始值3之前等待一秒钟(总倒计时时间将为4秒,给出或接受)。吹毛求疵:这将在显示初始值3之前等待一秒钟(总倒计时时间将为4秒,给出或接受)。非常同意将jQuery包含在其中是没有意义的,但我认为这仍然需要绑定到文档加载事件,因为您正在获取一个DOM元素,但它还不能保证可用。(也可能值得注意的是IE<10不支持setTimeout的附加参数。)@Semicolon你是对的,我更新了我的答案(使用
window.onload
获得最广泛的支持,并在剩余时间使用全局变量而不是参数)。我非常同意将jQuery包含在其中是没有意义的,但我认为这仍然需要绑定到DocumentLoad事件,因为您正在获取一个DOM元素,但它还不能保证可用。(也可能值得注意的是IE<10不支持setTimeout的附加参数。)@Semicolon你是对的,我更新了我的答案(使用
window.onload
获得最广泛的支持,并在剩余时间使用全局变量而不是参数)