2 つの異なる一連のグラフを表示する 2 つのボタンがあります。グラフの各シリーズは、3 秒の遅延で徐々に上下に表示されます。ユーザーが最初のボタンをクリックすると、最初のシリーズが徐々に表示され、2 番目のボタンをクリックすると、最初のシリーズが削除され、2 番目のシリーズが 1 つずつ徐々に表示され始めます。
コードの一部は次のとおりです。
<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);
}
});
問題は、最初のシリーズの追加が完了する前にユーザーが 2 番目のボタンをクリックすると、div がクリアされますが、最初のシリーズはそのグラフを追加し続け、次に 2 番目のシリーズが追加されることです。したがって、別のパラメーターを使用して 2 回目に実行する前に、最初の setTimeOut を停止する必要があります。使用する必要があることを理解しています
clearTimeout(timer)
...しかし、どこで使用するのかわかりません。どこに置いても「不明な変数タイマー」が表示されます。