gpt4 book ai didi

javascript - Google 可视化图表在单独的 Div 中的多个实例 [跟进]

转载 作者:行者123 更新时间:2023-11-30 18:25:56 24 4
gpt4 key购买 nike

这是对我已经在 StackOverflow 上提出的一个问题的跟进。所以请务必阅读那篇文章以了解全貌:

Multiple Instances of Google Visualizations Chart Inside Separate Divs

因此,为了让整个事情变得动态,我编写了以下代码:

var containers = document.getElementsByClassName('gaugeWrapper');
console.log(containers);
google.load('visualization', '1', { packages: ['gauge'] });
for(var i = 0; i < containers.length; i++) {
var id = containers[i].getAttribute('id');
var name = containers[i].getAttribute('data-name');
var value = containers[i].getAttribute('data-value');
google.setOnLoadCallback(function () { drawChart(id, name, value) });

}

function drawChart(id, name, value) {
console.log(id);
console.log(name);
console.log(value);
var data = google.visualization.arrayToDataTable([
['Label', 'Value'],
[name, value]
]);

var options = {
width: 400, height: 120,
redFrom: 90, redTo: 100,
yellowFrom: 75, yellowTo: 90,
minorTicks: 5
};

var chart = new google.visualization.Gauge(document.getElementById(id));
chart.draw(data, options);
}

这是行不通的。问题是控制台只输出最后一个 div 的数据。这意味着该函数使用同一组参数被调用 5 (containers.length) 次。

更新:

根据 Ateszki 的回答,这是我更新的代码:

    google.load('visualization', '1', { packages: ['gauge'] });     
google.setOnLoadCallback(drawChart);

function drawChart() {
var containers = document.getElementsByClassName('gaugeWrapper');
for (var i = 0; i < containers.length; i++) {

var id = containers[i].getAttribute('id');
var name = containers[i].getAttribute('data-name');
var value = containers[i].getAttribute('data-value');

var data = google.visualization.arrayToDataTable([
['Label', 'Value'],
[name, value]
]);

var options = {
width: 400, height: 120,
redFrom: 90, redTo: 100,
yellowFrom: 75, yellowTo: 90,
minorTicks: 5
};
var cont = document.getElementById(id);
console.log(cont);
var chart = new google.visualization.Gauge(cont);
chart.draw(data, options);
}
}

不幸的是,我仍然无法让它工作。现在屏幕上没有任何内容呈现,尽管我的 console.log 似乎输出了正确的内容...

有什么解释/建议吗?

最佳答案

您绑定(bind)的 onload 函数正在覆盖之前的函数。

也许您可以将这些值存储在另一个对象中,然后在一个函数中一次加载它们。

关于javascript - Google 可视化图表在单独的 Div 中的多个实例 [跟进],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com