我有兩個按鈕應該顯示兩個不同系列的圖表。每一系列圖形逐漸顯示一個在另一個之下,延遲3秒。如果用戶點擊第一個按鈕,他會逐漸顯示第一個系列,如果用戶點擊第二個按鈕,第一個系列將被刪除,第二個系列將逐漸開始逐漸顯示。中斷JQuery setTimeout函數
下面是一段代碼:
<button type="button" onclick="show_graphs(1)"></button>
<button type="button" onclick="show_graphs(2)"></button>
<div id="stats"></div>
function show_graphs(type) {
var i = 0;
$('#stats').html('');
$.getJSON('stats.php?type=' + type, function (data) {
for (chartData in data) {
i++;
var timer = setTimeout(function(index,d1){
return function() {
var chart = new AmStockChart();
dataSet.dataProvider = data[d1];
// etc. etc.
$('#stats').append('div id="chartdiv' + index + '"></div>');
chart.write("chartdiv" + index);
}
}(i,chartData), 3000*i);
}
});
的問題是,如果用戶點擊第二個按鈕之前,第一個系列完成追加然後在div被清除,但第一個系列繼續追加其graps,然後第二個系列獲得附加。所以正如我udnderstand我需要停止第一次setTimeOut第二次運行與另一個參數。我知道我需要使用
clearTimeout(timer)
......但我不知道在哪裏使用它。無論我把它放在哪裏,我都會得到'未知變量計時器'。
問題變量'timer'是本地'$ .getJSON'回調函數... –
你在哪裏使用'clearTimeout(定時器)'? –
它有助於在外面聲明它,然後在函數內部使用它嗎? – user164863