【问题标题】:Accessing vars inside functions访问函数内部的变量
【发布时间】:2015-04-29 01:56:08
【问题描述】:

在以下代码中:

 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();
});

饼图变量在 JSON 函数中更新。然后调用 makeChart 函数。如果我将 console.log(pie) 放在 makeChart() 中,它会打印出带有数字的数组 Pie。但是,由于某种原因,它不会将此 var 传递给制作图表的函数。此外,如果我使用 Dummy Data 在这个函数中放置一个 pie 变量,它会生成图表。

我认为这一定与范围有关,但我有点迷茫。任何帮助将不胜感激。

【问题讨论】:

  • 您发布的代码应该没问题。怎么了?是否报告了错误?
  • 没有错误报告,我已经向几个人展示了上面提到的看起来很奇怪,如果我放入带有硬编码数据的本地饼图数组,它似乎工作正常。
  • 我应该添加我正在使用 chart.js,如果这对我包含 3rd 方库有影响
  • 只要在调用函数时存在<canvas> 元素,它就可以工作。您的代码是从 DOMReady 或 onload 处理程序调用的,还是在文档头部?
  • 我尝试将它包装在 jQuery( "#canvas" ).load(function() 和文档准备中,但这些也没有工作

标签: javascript variables scope global-variables


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2013-08-16
    相关资源
    最近更新 更多