Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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_Variables_Scope_Global Variables - Fatal编程技术网

Javascript 访问函数内部的变量

Javascript 访问函数内部的变量,javascript,variables,scope,global-variables,Javascript,Variables,Scope,Global Variables,在以下代码中: var pie = []; function makeChart() { new Chart(document.getElementById("canvas").getContext("2d")).Doughnut( pie); }; var data = jQuery.getJSON('xxx', function(data) { pie = [{ value: data.company_live_ads,

在以下代码中:

 var pie = [];

function makeChart() {
    new Chart(document.getElementById("canvas").getContext("2d")).Doughnut(
        pie);
};

var data = jQuery.getJSON('xxx', function(data) {

    pie = [{
        value: data.company_live_ads,
        color: "#F7464A"
    }, {
        value: data.total_candidates,
        color: "#46BFBD"
    }, {
        value: data.company_ads_published_3days,
        color: "#FDB45C"
    }, {
        value: data.company_apps_today,
        color: "#4D5360"
    }];

    makeChart();
});
pie变量在JSON函数中更新。然后调用makeChart函数。如果我将console.log(pie)放在makeChart()中,它会打印带有数字的数组pie。但是,出于某种原因,它不会将此变量传递到生成图表的函数中。此外,如果我在这个函数中放入一个带有伪数据的pie变量,它将生成图表


我想这一定和范围有关,但我有点迷路了。任何帮助都将不胜感激。

JSON将数字作为字符串传递,因此硬编码值可以工作。使用parseInt()更改为生成的数字和图表

你发布的代码应该可以。怎么了?是否报告错误?未报告错误,我已经向一些人展示过,如上所述,这似乎很奇怪,如果我放入一个带有硬编码数据的饼图本地数组,它似乎工作得很好。我应该补充一点,我使用的是chart.js,如果这让我包括一个第三方lib,那么只要调用函数时
元素存在,它就应该工作。您的代码是从DOMReady或onload处理程序调用的,还是在文档头中?我尝试用jQuery(#canvas)包装它。load(function()和document ready),但它们都不起作用