我生成多个图表,每个图表都有自己的setInterval来刷新数据。我已经将它设置为clearInterval当动态生成的容器被删除 - 但如果我重新加载,并且它具有相同的ID旧setInterval继续运行。有没有办法设置一个动态命名的setInterval,可以在生成替换时停止?停止动态生成setInterval
现在我使用:
function generateChart(data, location){
var chart = new Highcharts.Chart({
// blah blah blah
}, function(chart){
setInterval(function(){
if($('#'+location).length){
// I'm doing stuff every minute
}else{
clearInterval();
}
},60000);
});
}
会发生什么情况是,该位置是随机生成的字符串,成为了Highchart容器中的元素ID,如果他们用户保存图表就变成了唯一标识符。如果用户更新已保存的图表并重新加载图表,则旧图标将获得.removed(),并在其位置生成新图表。现在,新元素具有与旧元素相同的元素ID,并且由于旧时间间隔发现它想要的容器,它会尝试继续更新 - 这是因为它的图表变为无效。
有没有办法设置一个动态变量我可以使用setInterval,以便我可以clearInterval吗?
var blob+location = setInterval(function(){ ...
然后
clearInterval(blob+location);
请看看我用这个小例子来解释你setTimeout和关闭的东西http://jsfiddle.net/coma/vECyv/ – coma 2013-05-13 22:53:14
你的例子只有当我有有限次数我需要它运行 - 我需要它继续运行,直到取消或不存在。 – jbolanos 2013-05-13 23:08:24
哼哼......让我来几分钟... – coma 2013-05-13 23:11:14