Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 加载前两个图表时加载图表_Javascript_Jquery_Arrays_Charts - Fatal编程技术网

Javascript 加载前两个图表时加载图表

Javascript 加载前两个图表时加载图表,javascript,jquery,arrays,charts,Javascript,Jquery,Arrays,Charts,我有两个通过按钮加载的图表,我想启动第三个(之前2个之间的%),当两个都加载时,是否有人能提供一种方法来添加一个控件,如果两个都加载了,那么可以加载第三个图表 我希望澄清 谢谢 //first function (starts with a button) function loadGrafico(array_Label, array_Risultati) { var grafico = document.getElementById("query1"); var query1

我有两个通过按钮加载的图表,我想启动第三个(之前2个之间的%),当两个都加载时,是否有人能提供一种方法来添加一个控件,如果两个都加载了,那么可以加载第三个图表

我希望澄清

谢谢

//first function (starts with a button)
function loadGrafico(array_Label, array_Risultati) {
    var grafico = document.getElementById("query1");
    var query1 = new Chart(grafico, {
        type: 'bar',
        data: {
            labels: array_Label,
            datasets: [
                {
                    backgroundColor: [

                        ],
                    borderWidth: 1,
                    data: array_Risultati,
                    }
                ]
        }
    });
}
//second function (starts with a button too)
function loadChart(array_Label, array_N_valutazioni) {
    var crt = document.getElementById("query2");
    var query = new Chart(crt, {
        type: 'bar',
        data: {
            labels: array_Label,
            datasets: [
                {
                    backgroundColor: [

                        ],
                    borderWidth: 1,
                    data: array_N_valutazioni,
                    }
                ]
        }
    });
}
//that's the function have to be loaded when the 2 before are loaded
function loadPercentuale(array_Label, array_Percentuale) {
    var grafo = document.getElementById("percentuale");
    var percentuale = new Chart(grafo, {
        type: 'bar',
        data: {
            labels: array_Label,
            datasets: [
                {
                    backgroundColor: [

                        ],
                    borderWidth: 1,
                    data: array_Percentuale
                    }
                ]
        }
    });
}

你为什么不试试标志变量呢?我希望这不是一个更好的解决方案,但它会对您有所帮助。在包含布尔值的两个函数中放置两个标志变量。然后调用第三个函数如果两个变量都返回true,则第三个函数将加载,并且图表也将自动加载

在您的注释和详细信息之后,我认为您正在寻找类似以下内容:

 // tmpArray, starting values are just to let you see what I'll store in there.
var tmpArray=[['array_Risultati'],['array_N_valutazioni']];
var tmpArrayLabel=[];

// function to calculate percentage between array values
function getPercent(){
    var return_array = [];
    for(var i=0; i < tmpArray[0].length; i++)
        return_array[i] = parseInt(tmpArray[0][i]*tmpArray[1][i]/100); 
    return return_array;
}

//first function (starts with a button)
function loadGrafico(array_Label, array_Risultati) {
    tmpArray[0]=array_Risultati;
    var grafico = document.getElementById("query1");
    var query1 = new Chart(grafico, {
        type: 'bar',
        data: {
            labels: array_Label,
            datasets: [{
                    backgroundColor: [],
                    borderWidth: 1,
                    data: array_Risultati,
                    }]
        }
    });
    // Verify if loadChart for this array_Label has been called to execute loadPercentuale
    if (tmpArrayLabel==array_Label) loadPercentuale();
    tmpArrayLabel=array_Label;
}

//second function (starts with a button too)
function loadChart(array_Label, array_N_valutazioni) {
    tmpArray[1]=array_N_valutazioni;
    var crt = document.getElementById("query2");
    var query = new Chart(crt, {
        type: 'bar',
        data: {
            labels: array_Label,
            datasets: [{
                    backgroundColor: [],
                    borderWidth: 1,
                    data: array_N_valutazioni,
                    }]
        }
    });
    // Verify if loadGrafico for this array_Label has been called to execute loadPercentuale
    if (tmpArrayLabel==array_Label) loadPercentuale();
    tmpArrayLabel=array_Label;
}

// That's the function have to be loaded when the 2 before are loaded
function loadPercentuale() {
    var array_Percentuale=getPercent();
    var grafo = document.getElementById("percentuale");
    var percentuale = new Chart(grafo, {
        type: 'bar',
        data: {
            labels: tmpArrayLabel,
            datasets: [{
                    backgroundColor: [],
                    borderWidth: 1,
                    data: array_Percentuale,
                    }]
        }
    });
}

在loadPercentuale函数中需要传递哪些数据?voglio passarli array_Label在ASCSASSAOK中的顺序为e la percentuale tra array_Risultati e array_N_valutazioni,但在第二个函数中只有array_N_valutazioni,因此我必须假设您只能在第二个函数之后执行第三个函数?这是真的吗?只有在第一个和第二个都加载之后,你才能检查我的答案吗?我通过0只是为了测试,但它应该可以工作。你能给我一个例子吗?函数functionOne(){//在这个函数的结果出来后,放置两个标志变量并给它们赋值。boolOne=true;boolTwo=true;}//现在调用两个函数,比如if(boolOne){//调用function2}现在,第一个和第二个图表没有显示结果,第三个图表也没有,有GET调用,但没有图表startsBuongiorno!我想我需要看更多的代码来理解你在做什么。。。我是说ajax调用在哪里?你能提供一把小提琴吗?不管怎样,现在我想那一定是逗号的错误。。我已经编辑了答案。试试看,没有办法……但是对于我用另一种方法做的控制,所以现在我只需要计算array_Risultati和array_N_valutazioni的百分比,你能给我建议一种计算方法吗?谢谢,请使用函数getPercent,我已经完成了。但正如我所说,谷歌:Vixed
// Caching #percentuale element
var $percentuale=$('#percentuale');

//first function (starts with a button)
function loadGrafico(array_Label, array_Risultati) {
    $percentuale.data('loadGrafico',array_Label);
    var grafico = document.getElementById("query1");
    var query1 = new Chart(grafico, {
        type: 'bar',
        data: {
            labels: array_Label,
            datasets: [
                {
                    backgroundColor: [

                        ],
                    borderWidth: 1,
                    data: array_Risultati,
                    }
                ]
        }
    });
    // Verify if loadChart for this array_Label has been called to execute loadPercentuale
    if ($percentuale.data('loadchart')==array_Label) loadPercentuale(array_Label,0);
}

//second function (starts with a button too)
function loadChart(array_Label, array_N_valutazioni) {
    $percentuale.data('loadchart',array_Label);
    var crt = document.getElementById("query2");
    var query = new Chart(crt, {
        type: 'bar',
        data: {
            labels: array_Label,
            datasets: [
                {
                    backgroundColor: [

                        ],
                    borderWidth: 1,
                    data: array_N_valutazioni,
                    }
                ]
        }
    });
    // Verify if loadGrafico for this array_Label has been called to execute loadPercentuale
    if ($percentuale.data('loadGrafico')==array_Label) loadPercentuale(array_Label,0);
}

// That's the function have to be loaded when the 2 before are loaded
function loadPercentuale(array_Label, array_Percentuale) {
    var grafo = document.getElementById("percentuale");
    var percentuale = new Chart(grafo, {
        type: 'bar',
        data: {
            labels: array_Label,
            datasets: [
                {
                    backgroundColor: [

                        ],
                    borderWidth: 1,
                    data: array_Percentuale
                    }
                ]
        }
    });
}