2014-12-04 54 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(); 
}