2017-02-13 88 views
1
start.on('click', function(){ 
    setInterval(time, 1000); 

    object.animate({ marginTop: '500px' }, 3000, function() { 
    normaal.fadeIn(700); 
    }); 
}); 


function time() { 
    change.textContent = Number(change.textContent) + 50; 
} 

我可以多麼興奮地停止(清除)這個setInterval。我希望一旦偶數被調用,它會在3000毫秒後自動啓動。如何清除這個setInterval?

回答

1

setInterval不停地調用該方法。你想要的是使用setTimeout來代替,它會在等待指定的時間段後調用一次(並且只會調用一次)該方法。如果您想阻止執行setTimeout調用,則可以使用clearTimeout

setTimeout(time, 3000); 
+0

謝謝!你是否也碰巧知道如何讓動畫在第二秒之前變得更快。就像重力一樣,我希望動畫隨着時間的推移而加速。 – user7548524

+0

你應該問一個單獨的問題,從那以後你會得到更多/更好的答案。我不能說我對動畫知之甚多,對不起。 –

-1

var interval; 
 

 
start.on('click', function() { 
 
    interval = setInterval(time, 1000); 
 

 
    object.animate({ marginTop:'500px' }, 3000, function() { 
 
    normaal.fadeIn(700); 
 
    }); 
 
}); 
 

 

 
function time() { 
 
    change.textContent = Number(change.textContent) + 50; 
 
} 
 

 
function stop() { 
 
    clearInterval(interval); 
 
}

2

您可以使用clearInterval方法。

var intervalID = setInterval(time, 1000);

setInterval返回值是一個數值,非零值,其 識別由呼叫建立給setInterval()的定時器;這個值 可以傳遞給WindowOrWorkerGlobalScope.clearInterval()取消 的超時時間。

然後到clearInterval,通過intervalID,如clearInterval(intervalID);

此外,setInterval調用回調反覆,如果你只需要執行一次代碼塊,然後使用的setTimeout來代替。