Mik*_*ike 30 javascript timeout settimeout
我想用Javascript进行秒倒计时.
这是我的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>
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
但是由于某种原因,它不会等待超时时间,而是立即执行countdown,这样当我刷新页面时它就会立即显示"完成".我知道它实际上是多次被执行,因为如果我这样做,innerHTML += seconds + " ";它会从45开始倒数.为什么超时会被超时?
Ble*_*der 54
setTimeout(countdown(element), 1000);使用该参数执行您的函数并将结果传递给setTimeout.你不希望这样.
相反,执行一个调用函数的匿名函数:
setTimeout(function() {
countdown(el); // You used `el`, not `element`?
}, 1000);
Run Code Online (Sandbox Code Playgroud)
小智 8
如果您想通过 向函数传递参数setTimeout,请尝试以下操作:
setTimeout(countdown, 1000, element);
Run Code Online (Sandbox Code Playgroud)
setTimeout 的语法如下:
setTimeout(function,milliseconds,param1,param2,...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17934 次 |
| 最近记录: |