2016-07-09 51 views
0

也許只是睡眠剝奪,但我不明白我做錯了什麼。SetTimeout和ClearTimeout(不清除在0)

我打電話countDown功能onLoadsetInterval

裏面的countDown功能我稱之爲clearTimeout當數量達到它除了0,當它達到2

我在做什麼錯叫?

這是一段代碼。

var interval, count = 5; 
 

 
countDown() 
 
interval = setInterval(countDown, 1000); 
 

 
function countDown() { 
 
    document.body.innerHTML = count 
 
    count-- 
 

 
    if(count === 0) { 
 
    clearInterval(interval) 
 
    document.body.innerHTML = "Redirecting to ....." 
 
    } 
 
}

回答

1
function countDown() { 
    document.body.innerHTML = count; 
    if(count === 0) { 
    clearInterval(interval) 
    document.body.innerHTML = "Redirecting to ....."; 
    } else { 
    count--; 
    } 
} 
+0

我就可以在4分鐘內接受。上帝,我今天覺得愚蠢。上次我嘗試編碼3天不睡覺。 –

+0

儘管此代碼可能會回答問題,但提供有關如何解決問題和/或爲何解決問題的其他上下文可以提高答案的長期價值。 – HiDeo

1

這是因爲你先降反再評估,因爲這1步錯過

var interval, count = 5; 
 

 
countDown(); 
 
interval = setInterval(countDown, 1000); 
 

 

 
function countDown() { 
 
    
 

 
    if(count === 0) { 
 
    clearInterval(interval) 
 
    document.body.innerHTML = "Redirecting to ....." 
 
    } 
 
    else 
 
    { 
 
    document.body.innerHTML = count 
 
    count-- 
 
    } 
 
}

1

剛放在if語句後面的count--以及if語句末尾的return;,如果您想在此之後阻止執行。

var interval, count = 5; 
 

 
countDown() 
 
interval = setInterval(countDown, 1000); 
 

 
function countDown() { 
 
    document.body.innerHTML = count; 
 
    
 

 
    if(count === 0) { 
 
    clearInterval(interval); 
 
    document.body.innerHTML = "Redirecting to ....."; 
 
    return; 
 
    } 
 
    count-- 
 
}