我想用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开始倒数.为什么超时会被超时?
我很好奇何时需要/最佳实践使用关键字this。我知道this在确定函数this值时会使用它,但它总是需要吗?
我问的原因是因为我有一个内部函数,它在我的模块中调用,它真正做的就是对您传递给它的一些数据进行排序。我的问题是我应该使用关键字调用这个函数this还是单独调用这个函数。
例如:
function formatSomeData(data){
//code........
}
this.formatSomeData(data);
OR
formatSomeData(data);
Run Code Online (Sandbox Code Playgroud)
我知道调用函数的上下文及其目的对于回答问题很重要,但在这种情况下,就像我提到的,我真的不需要在this任何时候访问该对象。调用函数时使用它仍然是一个好习惯吗?我问的并不是“这个”如何工作,而是什么时候适合使用它,什么时候不适合。