我生成多個圖表,每個圖表都有自己的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