Javascript clearTimeout()未清除计时器 功能倒计时(秒、元素) { var元素=document.getElementById(elem); element.innerHTML=“游戏以“+秒+秒”结束!”; 如果(secs
清除超时没有任何意义,因为您处于由要清除的超时调用的回调中,因此实际上没有什么需要清除的。即使您将Javascript clearTimeout()未清除计时器 功能倒计时(秒、元素) { var元素=document.getElementById(elem); element.innerHTML=“游戏以“+秒+秒”结束!”; 如果(secs,javascript,html,css,cleartimeout,Javascript,Html,Css,Cleartimeout,清除超时没有任何意义,因为您处于由要清除的超时调用的回调中,因此实际上没有什么需要清除的。即使您将timer声明为全局变量,也不会处理这个概念性问题 您的问题实际上是在秒数用完后仍然调用setTimeout。因此,在执行此操作之前请退出此函数(或使用else): 功能倒计时(秒、元素) { var元素=document.getElementById(elem); element.innerHTML=“游戏以“+秒+秒”结束!”; 如果(secs清除超时没有任何意义,因为您处于由要清除的超时
timer
声明为全局变量,也不会处理这个概念性问题
您的问题实际上是在秒数用完后仍然调用setTimeout
。因此,在执行此操作之前请退出此函数(或使用else
):
功能倒计时(秒、元素)
{
var元素=document.getElementById(elem);
element.innerHTML=“游戏以“+秒+秒”结束!”;
如果(secs清除超时没有任何意义,因为您处于由要清除的超时调用的回调中,因此实际上没有什么需要清除的。即使您将timer
声明为全局变量,也不会处理这个概念性问题
您的问题实际上是在秒数用完后仍然调用setTimeout
。因此,在执行此操作之前请退出此函数(或使用else
):
功能倒计时(秒、元素)
{
var元素=document.getElementById(elem);
element.innerHTML=“游戏以“+秒+秒”结束!”;
if(secs如果您只需使用setInterval
并执行以下操作,效率会更高:
功能倒计时(秒、元素){
var区间;
var元素=document.getElementById(elem);
var timer=setInterval(函数(){
秒--;
更新();
如果(秒<1){
清除间隔(计时器);
}
}, 1000);
函数更新(){
如果(秒>0){
element.innerHTML=“游戏以“+秒+秒”结束!”;
}否则{
document.getElementById('gameContent').style.display='none';
}
}
更新();
}
倒计时(5,“状态”);
游戏
如果您只需使用setInterval
并执行以下操作,效率会更高:
功能倒计时(秒、元素){
var区间;
var元素=document.getElementById(elem);
var timer=setInterval(函数(){
秒--;
更新();
如果(秒<1){
清除间隔(计时器);
}
}, 1000);
函数更新(){
如果(秒>0){
element.innerHTML=“游戏以“+秒+秒”结束!”;
}否则{
document.getElementById('gameContent').style.display='none';
}
}
更新();
}
倒计时(5,“状态”);
游戏
clearTimeout(timer);
timer
每次都为空。您将timer
声明为函数中的最后一个变量-您希望如何访问它?在倒计时
方法之外声明timer
它需要在方法调用之间保持。clearTimeout(timer)
timer
每次都为空。您将timer
声明为函数中的最后一个变量-您希望如何访问它?在倒计时
方法之外声明timer
。它需要在方法调用之间保持。
function countDown(secs,elem)
{
var element = document.getElementById(elem);
element.innerHTML = "Game ends in " + secs + " seconds!";
if(secs<1)
{
clearTimeout(timer);
document.getElementById('gameContent').style.display='none';
}
secs--;
var timer = setTimeout('countDown('+secs+',"'+elem+'")',1000);
}
<div class="timerCount" id="status"></div>
<script>countDown(5,"status");</script>
function countDown(secs,elem)
{
var element = document.getElementById(elem);
element.innerHTML = "Game ends in " + secs + " seconds!";
if(secs<1)
{
document.getElementById('gameContent').style.display='none';
return; // <-------- add this!
}
secs--;
// avoid passing string as first argument to setTimeout:
setTimeout(countDown.bind(null, secs, elem),1000);
}