Javascript 加载前两个图表时加载图表
我有两个通过按钮加载的图表,我想启动第三个(之前2个之间的%),当两个都加载时,是否有人能提供一种方法来添加一个控件,如果两个都加载了,那么可以加载第三个图表 我希望澄清 谢谢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
//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
}
]
}
});
}