javascript - ChartJS 使用 jQuery 数组动态添加值

标签 javascript jquery chart.js

我正在尝试使用 jQuery/AJAX 查询中的数据动态填充 ChartJS 中的饼图。

我唯一遇到的困难是以 ChartJS 理解的格式创建数据。这是所需的格式:

var dynamicData = [
    { label: "One", value: 23 },
    { label: "Two", value: 33 },
    { label: "Three", value: 43 },
    { label: "Four", value: 53 },
]

当我尝试创建它时,我在每组数据周围加上双引号""。我知道这是一个简单的错误,但我无法弄清楚。这就是我创建数据的方式(部分 jQuery 代码):

.success(function(response) {
    if(!response.errors && response.result) {
        var doughnutData = [];
        $.each(response.result, function( index, value) {
            doughnutData.push('{ label: "'+value[0]+'", value: '+value[2]+',color:"#F7464A" }');
       });

        console.log(doughnutData);

var doughnutOptions = {
    segmentShowStroke : true,
    segmentStrokeColor : "#fff",
    segmentStrokeWidth : 2,
    percentageInnerCutout : 50,
    animation : true,
    animationSteps : 100,
    animationEasing : "easeOutBounce",
    animateRotate : true,
    animateScale : true,
    onAnimationComplete : null
}
var ctx = document.getElementById("chart3").getContext("2d");
var mydoughnutChart = new Chart(ctx).Doughnut(dynamicData, doughnutOptions);
    } else {
    alert("error");
    }

控制台显示:

["{ label: "17x1p14e6662", value: 16,color:"#F7464A" }", "{ label: "8734hjgfd784ew", value: 8,color:"#F7464A" }"]

我做错了什么?

最佳答案

控制台将对象作为字符串输出,因为您将字符串推送到 var donutData,您正在将对象用引号括起来,并将值连接到字符串,从而处理参数作为字符串类型传递给 Push 方法。

使用push方法将对象添加到数组的正确方法是这样的。

array.push({property:'string', property:2})

这意味着您的代码应该如下所示。

doughnutData.push({ label:value[0], value:value[2],color:"#F7464A" });

Here是有关 Push 方法如何在数组上工作的链接,并且 Here是另一个指向 javascript 对象的链接

另一件事是,当您创建图表时,您传递的是 vardynamicData 而不是 vardonutData

关于javascript - ChartJS 使用 jQuery 数组动态添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43387358/

相关文章:

javascript - 下拉菜单不适用于 JavaScript

javascript - y 轴值太高

javascript - onbeforeunload 根本不起作用

javascript - 如何在移动设备中显示模态框时停止背景滚动,仅使用 CSS 或 Javascript?

javascript - 构建一个画廊,在选择按钮时隐藏图像。它可以工作,但不会在页面加载时显示所有图像

javascript - 用于显示索引 View 中页面的下 zipper 接 Rails

javascript - 刷新所有 id 部分相等的元素

javascript - .toFixed() 如果数字对于元素来说太大

chart.js - ChartJS 禁用图表区域外的网格线

javascript - Chart.js 轴标签字体大小