Javascript 更新或插入新的值图表

Javascript 更新或插入新的值图表,javascript,Javascript,我添加了一个函数来在图表上添加一个新值 function method() { var myChart = new Chart(ctx, { type: 'line', data: { labels: ["January", "February", "March", "April", "May", "June", "July"], datasets: [ { label: "My First

我添加了一个函数来在图表上添加一个新值

function method() {
var myChart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: ["January", "February", "March", "April", "May", "June", "July"],
        datasets: [
            {
                label: "My First dataset",
                fill: false,
                lineTension: 0.1,
                backgroundColor: "rgba(75,192,192,0.4)",
                borderColor: "rgba(75,192,192,1)",
                borderCapStyle: 'butt',
                borderDash: [],
                borderDashOffset: 0.0,
                borderJoinStyle: 'miter',
                pointBorderColor: "rgba(75,192,192,1)",
                pointBackgroundColor: "#fff",
                pointBorderWidth: 1,
                pointHoverRadius: 5,
                pointHoverBackgroundColor: "rgba(75,192,192,1)",
                pointHoverBorderColor: "rgba(220,220,220,1)",
                pointHoverBorderWidth: 2,
                pointRadius: 1,
                pointHitRadius: 10,
                data: [65, 59, 80, 81, 56, 55, 40],
                spanGaps: false,
            }
        ]
    },
    options: {
        responsive: false,
    }
});
但编译器告诉我“myChart未声明”,在这种情况下,我如何绘制图表?
我刚开始使用canvas,这些图表的作用域很重要,而且您希望返回一些内容

function addvalue() {
myChart.data.labels.concat("August");
myChart.data.datasets[0].data.concat(55);
myChart.update();

正如Mihai所指出的,深入阅读MDN关于和关于的文档

您的代码需要导出或使
myChart
变量可供其他函数访问。这是一个快速而肮脏的解决方案-你需要决定什么最适合你的应用程序

function method() {
return new Chart(ctx, {
    type: 'line',
    data: {
        labels: ["January", "February", "March", "April", "May", "June", "July"],
        datasets: [
            {
                label: "My First dataset",
                fill: false,
                lineTension: 0.1,
                backgroundColor: "rgba(75,192,192,0.4)",
                borderColor: "rgba(75,192,192,1)",
                borderCapStyle: 'butt',
                borderDash: [],
                borderDashOffset: 0.0,
                borderJoinStyle: 'miter',
                pointBorderColor: "rgba(75,192,192,1)",
                pointBackgroundColor: "#fff",
                pointBorderWidth: 1,
                pointHoverRadius: 5,
                pointHoverBackgroundColor: "rgba(75,192,192,1)",
                pointHoverBorderColor: "rgba(220,220,220,1)",
                pointHoverBorderWidth: 2,
                pointRadius: 1,
                pointHitRadius: 10,
                data: [65, 59, 80, 81, 56, 55, 40],
                spanGaps: false,
            }
        ]
    },
    options: {
        responsive: false,
    }
});

var myChart = method();

function addvalue(myChart) {
myChart.data.labels.concat("August");
myChart.data.datasets[0].data.concat(55);
myChart.update();
return myChart;
}
这是全局范围(不是最好的),但它允许您的其他功能访问它:

const myChart = new Chart(ctx, {
    type: 'line',
    data: {
        labels: ["January", "February", "March", "April", "May", "June", "July"],
        datasets: [
            {
                label: "My First dataset",
                fill: false,
                lineTension: 0.1,
                backgroundColor: "rgba(75,192,192,0.4)",
                borderColor: "rgba(75,192,192,1)",
                borderCapStyle: 'butt',
                borderDash: [],
                borderDashOffset: 0.0,
                borderJoinStyle: 'miter',
                pointBorderColor: "rgba(75,192,192,1)",
                pointBackgroundColor: "#fff",
                pointBorderWidth: 1,
                pointHoverRadius: 5,
                pointHoverBackgroundColor: "rgba(75,192,192,1)",
                pointHoverBorderColor: "rgba(220,220,220,1)",
                pointHoverBorderWidth: 2,
                pointRadius: 1,
                pointHitRadius: 10,
                data: [65, 59, 80, 81, 56, 55, 40],
                spanGaps: false,
            }
        ]
    },
    options: {
        responsive: false,
    }
});

在不了解更多上下文的情况下,我不能明确地说要做得更好(如
要求
将图表转换为其他代码)

了解范围,并且您的函数必须向Mihai返回+1;您的
myChart
变量仅在
method
函数中可用,并且
addvalue
无法看到它。抱歉。。我怎么联系你?如果我是自动取款机,你可以通过键入@Sean来通知我你发送的消息。。。我想。您还可以更新您的问题,以使可能有相同问题的其他人受益。如果你觉得需要私人聊天,也许我们可以用。或者通过一个我们可以对此进行评论,或者通过代码更改进行对话(虽然这可能不是讨论如何组织应用程序和使用依赖注入/
require
/等的最佳方式)是的,我可以来一点。我想你走了。很抱歉我需要这些图表的帮助。。你能创建一个聊天室吗?
function addvalue() {
  // myChart is now globally accessible
  myChart.data.labels.concat("August");   
  myChart.data.datasets[0].data.concat(55);
  myChart.update();
}