setTimeout()没有等待
我正在尝试用Java倒计时。
这是我的HTML
<div id="ban_container" class="error center">Please wait        <span id="ban_countdown" style="font-weight:bold">
        45</span>
        seconds before trying again
</div>
而我的JS:
<script type="text/javascript">    var seconds = <?php echo $user->getBlockExpiryRemaining(); ?>;
    function countdown(element) {
        var el = document.getElementById(element);
        if (seconds === 0) {
            document.getElementById("ban_container").innerHTML = "done";
            return;
        }
        else {
            el.innerHTML = seconds;
            seconds--;
            setTimeout(countdown(element), 1000);
        }
    }
    countdown('ban_countdown');
</script>
但是由于某种原因,它不会等待超时时间,而是立即执行countdown,以便在刷新页面时立即显示“完成”。我知道它实际上被执行了多次,因为如果我这样做,innerHTML
+= seconds + " ";它会从45开始递减计数。为什么会绕过超时?
回答:
setTimeout(countdown(element), 1000);执行带有该参数的函数,并将结果传递给setTimeout。你不要那样
相反,执行一个匿名函数来调用您的函数:
setTimeout(function() {    countdown(el);  // You used `el`, not `element`?
}, 1000);
以上是 setTimeout()没有等待 的全部内容, 来源链接: utcz.com/qa/403165.html







