0

再描画する必要がある 3 つのグラフがあります。

これは私がしなければならないコードです:

var arrOfChartContainers = ["TopLeft","TopRight","BottomLeft"];


var myAutoRefresh = setInterval(function(){
    if($("#TopLeft_chartConfig").css("display")==="none"){
        drawChart("TopLeft");
    }else{
        clearInterval(myAutoRefresh);
    }
},3000);

これをあと 2 回コピーして、他の 2 つのグラフを再描画したくありません。間隔で 3 つすべてを同時に実行したい場合、チャートをループするにはどうすればよいですか?

4

3 に答える 3

2

使用$.each:

$.each(arrOfChartContainers, function(index, entry) {
    $("#" + entry + "_chartConfig").doSomethingWithItHere();
});

例えば:

$.each(arrOfChartContainers, function(index, entry) {
    var $chart = $("#" + entry + "_chartConfig");
    if ($chart.css("display") === "none") {
        drawChart(entry);
    }
});

おそらくdrawChart、名前を間接的に使用するのではなく、jQuery オブジェクトを直接受け入れるように変更する価値があります。

于 2013-09-13T13:31:07.140 に答える
1

HTML: 以下の js に対応するために、チャート要素にクラスを追加します。

JS:

$('.someuniversalchartclass').each(function(){
   ($(this).hasClass('ninja')) ? drawChart($(this)) : clearInterval(myAutoRefresh);
});    

CSS:

.ninja {
   display:none;
}
于 2013-09-13T13:33:01.470 に答える
1

for ループを使用できます。また、cssをチェックする代わりに、使用できます.is(':visible')

for (var i = 0; i < arrOfChartContainers.length; i++) {
    if ($('#' + arrOfChartContainers[i] + '_chartConfig').is(':visible')) {
        drawChart(arrOfChartContainers[i]);
    }
}
于 2013-09-13T13:33:36.510 に答える