将if语句转换为循环

时间:2013-09-13 13:28:55

标签: javascript jquery

我有3个图表需要重绘。

这是我必须做的代码:

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


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

我不想再复制2次并重新绘制另外两张图表。如果我想在内部同时进行所有三个,我怎样才能遍历我的图表?

3 个答案:

答案 0 :(得分:2)

使用$.each

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

E.g:

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

可能值得更改drawChart直接接受jQuery对象,而不是间接使用该名称。

答案 1 :(得分:1)

HTML:在图表元素中添加一个类以适应下面的内容。

IS:

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

CSS:

.ninja {
   display:none;
}

答案 2 :(得分:1)

您可以使用for循环。而不是检查CSS,你可以使用.is(':visible')

for (var i = 0; i < arrOfChartContainers.length; i++) {
    if ($('#' + arrOfChartContainers[i] + '_chartConfig').is(':visible')) {
        drawChart(arrOfChartContainers[i]);
    }
}