2016-11-09 30 views
0

我在做一個簡單的程序,每0.5秒增加一個數字。當我點擊開始它完美的作品。但是,當我點擊重新啓動時,增量會很好,但它們不會每0.5秒增加一次並且速度非常快,而且當我調用相同的函數時會發生這種情況?下面的JS小提琴鏈接。當再次調用SetInterval不一樣?

功能runFunc(){

+1

的'的setInterval()'函數返回你需要傳遞給'clearInterval()的值'。傳遞函數引用什麼都不做。 – Pointy

+0

@點我很抱歉,我不明白。我更多的是JS的新手。 – Aijaz

+0

您正將'varName'傳遞給'clearInterval()',並且不起作用。 – Pointy

回答

0

聲明變量區間之外功能

var myInterval = null; 

檢查,如果時間間隔已經在運行,如果是清除它,以避免多區間運行相同的功能,這使得在間隔成了看起來比第一次,它被稱爲

if (myInterval != null) { 
    clearInterval(myInterval); 
} 

也更快,這是不正確

clearInterval(varName); 

的參數應該是一個區間是這樣

clearInterval(myInterval); 

使你的JavaScript代碼會是這樣

var myInterval = null; 

function runFunc(){ 
    $('#counter').val(zero); 
    var varName = function(){ 
     var number = Number($('#number').val()); 
     var counter = Number($('#counter').val()); 
     if(counter < number) { 
      counter++; 
      console.log(counter); 
      $('#counter').val(counter); 
     } else { 
      clearInterval(myInterval); 
     } 
    }; 
    //check if an interval is already running if yes clear it 
    if (myInterval != null) { 
     clearInterval(myInterval); 
    } 
    myInterval = setInterval(varName, 500); 
}; 

show.click(runFunc); 

reset.click(function(){ 
    $('#number').val(zero); 
    $('#counter').val(zero); 
}); 

restart.click(runFunc); 
+0

對於'clearInterval()'的參數需要在兩個被調用的地方都是'myInterval'。 – Pointy

+0

@積分好嗎指出。我也忘了這只是我忘記糾正的提問者錯誤 – Beginner

0

u必須聲明一個變量爲的setInterval像「setIntervalID」

所以停止它clearInterval(「setIntervalID」);

JSFIDDLE

var initialNumber = 10; 
var zero = 0; 
$('#number').val(initialNumber); 
$('#counter').val(zero); 
var show = $('#show'); 
var reset = $('#reset'); 
var restart = $('#restart'); 
var setIntervalID; 
// console.log('initial value of number is ' + number); 
// console.log(typeof number); 
// console.log('initial value of counter is ' + counter); 

var varName = function(){ 
     var number = Number($('#number').val()); 
     var counter = Number($('#counter').val()); 
     if(counter < number) { 
      counter++; 
      console.log(counter); 
      $('#counter').val(counter); 
     } 
    } 

function runFunc(){ 
     $('#counter').val(zero); 
     setIntervalID = setInterval(varName, 500); 
}; 
function stopFunc(){ 
    clearInterval(setIntervalID); 
}; 

function restartGO(){ 

stopFunc(); 
runFunc(); 
} 

show.click(runFunc); 
restart.click(restartGO); 

reset.click(function(){ 
    $('#number').val(zero); 
    $('#counter').val(zero); 
}); 
相關問題