2014-12-04 49 views
0

我有一個JS可以創建一個圖形。圖形首先被渲染並且每3秒鐘不斷更新它,如下所示。在嵌套調用中使用clearInterval

我想在每次點擊按鈕時使用clearInterval或其他方式停止腳本的執行。我怎樣才能做到這一點?

我理解clearInterval是如何工作的,但是,我無法弄清楚如何根據事件控制嵌套的setInterval。

免責聲明:我是有點新的JS等

mystats = function() { 
    this.render = function() { 
    var graph = vendorgraph(); 
    graph.render(); 

    setInterval(function() { 
     jsonupdate.addData(seriesData,url); 
     graph.update(); 
    }, 3000); 
    } 
} 

var mytrends = new mystats(); 
mytrends.render(); 

回答

0

的setInterval返回一個值,你可以使用該值後停止它,可能通過將其存儲在一些間隔排列。

var intervalArray = []; 

mystats = function() { 
    this.render = function() { 
    var graph = vendorgraph(); 
    graph.render(); 

    var interval = setInterval(function() { 
     jsonupdate.addData(seriesData,url); 
     graph.update(); 
    }, 3000); 
    intervalArray.push(interval); 
    } 
}  

// later on 
var intervalVariable = intervalArray[0]; 
clearInterval(intervalVariable) 
+0

謝謝,我試圖讓它運行沒有運氣。事情是mystats是一個單獨的JS文件,所以我無法從我的HTML控制全局。 – sam 2014-12-04 17:05:49

+0

這只是一個例子,但你是否理解這個概念?您必須稍後存儲訪問的返回值。 – 2014-12-04 17:06:41

+1

謝謝。我並沒有完全按照你的建議去做,但是,得到了你所做的一些提示。我添加了一個答案。 – sam 2014-12-04 21:26:29

0

我從其他崗位的提示扎克和解決它這樣

mystats = function() { 
    var interval; 
    this.render = function() { 
    var graph = vendorgraph(); 
    graph.render(); 

    interval = setInterval(function() { 
     jsonupdate.addData(seriesData,url); 
     graph.update(); 
    }, 3000); 
    } 
    this.stoprender = function() { 
     clearInterval(interval); 
    } 
} 

var mytrends = new mystats(); 
mytrends.render(); 
on my event { 
    mytrends.stoprender(); 
}