我有一个javascript代码,在倒计时结束时会出错。我需要创建一个代码来停止倒计时。它可以开始倒计时但我无法阻止它。 这是我的代码:
function countdown( elementName, minutes, seconds )
{
var element, endTime, hours, mins, msLeft, time;
function twoDigits( n )
{
return (n <= 9 ? "0" + n : n);
}
function updateTimer()
{
msLeft = endTime - (+new Date);
if ( msLeft < 1000 ) {
givestrongerror(error_timeout);
} else {
time = new Date( msLeft );
hours = time.getUTCHours();
mins = time.getUTCMinutes();
element.innerHTML = (hours ? hours + ':' + twoDigits( mins ) : mins) + ':' + twoDigits( time.getUTCSeconds() );
setTimeout( updateTimer, time.getUTCMilliseconds() + 500 );
}
}
element = document.getElementById( elementName );
endTime = (+new Date) + 1000 * (60*minutes + seconds) + 500;
updateTimer();
}
我可以使用此选项从5分钟开始倒计时:
countdown( "countdown", 5, 00 );
答案 0 :(得分:0)
您只需清除超时即可。 setTimeout()
会返回一个超时ID,可用于使用clearTimeout()
清除它。
var countdown_timeout_id;
function startCountdown()
{
countdown_timeout_id = window.setTimeout(function() { /*blah*/ }, 100);
}
function stopCountdown()
{
window.clearTimeout(countdown_timeout_id);
}
如果你想让用户停止它,你可以在倒计时功能的底部返回一个带有stopCountdown
功能的对象。
return {
stop: stopCountdown
}
答案 1 :(得分:0)
通过将clearTimeout
分配给变量setTimeout
,setTimeout
上的timeout
使用//make timeout global
var timeout = null;
function countdown( elementName, minutes, seconds )
{
var element, endTime, hours, mins, msLeft, time;
function twoDigits( n )
{
return (n <= 9 ? "0" + n : n);
}
function updateTimer()
{
msLeft = endTime - (+new Date);
if ( msLeft < 1000 ) {
givestrongerror(error_timeout);
} else {
time = new Date( msLeft );
hours = time.getUTCHours();
mins = time.getUTCMinutes();
element.innerHTML = (hours ? hours + ':' + twoDigits( mins ) : mins) + ':' + twoDigits( time.getUTCSeconds() );
//set variable 'timeout' to the setTimeout that could be erroneous
timeout = setTimeout( updateTimer, time.getUTCMilliseconds() + 500 );
}
}
element = document.getElementById( elementName );
endTime = (+new Date) + 1000 * (60*minutes + seconds) + 500;
updateTimer();
}
//call this function to end the timeout
function endTimeout(){
clearTimeout(timeout);
}
。
MyWorker.perform_async('Aname')