2015-12-27 34 views
-1

我在測試中顯示每個問題的分鐘/秒計數器(它並不總是從0開始,因爲用戶可以返回問題)。Ajax調用後的JS和setInterval

用戶通過ajax導航到下一個問題。

我的問題是,第一個問題後,JS還記得以前的問題的值。

從ajax調用返回的值是可以的。

<script> 


$.ajax({ 
    type : "POST", 
    cache : false, 
    url  : "/ajax/Get_test_question", 
    data: post_data, 
    success: function(sec) {    
     show_timer(sec);   
    } 
}) 


function pad(val) { 
    return val > 9 ? val : "0" + val; 
} 
function show_timer(sec) { 
     timer=setInterval(function() { 
      console.log(sec) 
      $("#seconds_counter").text(pad(++sec % 60)); 
      $("#minutes_counter").text(pad(parseInt(sec/60, 10))); 

    }, 1000); 
} 

</script>  
+1

我的問題是,第一個問題後,JS還記得以前的問題的值。這是一個怎樣的問題? – void

+0

[在JavaScript中停止setInterval調用]的可能重複(http://stackoverflow.com/questions/109086/stop-setinterval-call-in-javascript) – JJJ

回答

0

在下一個問題開始間隔之前,您應該在顯示下一個問題之前立即銷燬間隔對象。

var timer; 
function show_timer(sec) { 
    if(timer) { 
     clearInterval(timer); 
    } 

    timer=setInterval(function() { 
     console.log(sec) 
     $("#seconds_counter").text(pad(++sec % 60)); 
     $("#minutes_counter").text(pad(parseInt(sec/60, 10))); 

    }, 1000); 
}