将变量值传递到循环外

时间:2011-01-13 17:54:36

标签: javascript

我知道这可能是最愚蠢的问题,但它是一个绝望的尝试来自UI人做某事......我从json文件中获取了一些值,然后我传递这些值来绘制一个使用jflot的图表。

//脚本

function plot4() {
    $.getJSON("wc.json",function(data){
        $.each(data.posts, function(i,data){
            var wc = data.title;
            alert(wc);
        });
    });

    function drawPlot() {
        alert(wc);
        // function which draws plot using jFlot using a huge dataset
    }
}

我可以将getjson文件包装在drawPlot函数之外吗?pls advice

2 个答案:

答案 0 :(得分:1)

不,因为您声明wc(通过var wc)属于“每个”区块的范围。

要做你想做的事,你需要:

  1. wc移至包含两个函数的范围

    function plot4() {
        var wc;
        $.getJSON("wc.json",function(data){
            $.each(data.posts, function(i,data){
                wc = data.title;
    
  2. 或者,如果您真的希望从drawPlot循环中调用each(您似乎没有全部调用它!),请将wc作为参数传递它呢

    // ... some other code 
          var wc = data.title;
          drawPlot(wc);
    // ... some other code 
    
    function drawPlot(wc) {
        alert(wc);
       // function which draws plot using jFlot using a huge dataset
    }
    

答案 1 :(得分:1)

参数有什么问题?

function plot4() {
    $.getJSON("wc.json",function(data){
        $.each(data.posts, function(i,data){
            var wc = data.title;
            drawPlot(wc);
        });
    });

    function drawPlot(wc) {
        // function which draws plot using jFlot using a huge dataset
    }
}

...或:

function plot4() {
    $.getJSON("wc.json",function(data){
        $.each(data.posts, function(i,data){
            var wc = data.title;
            drawPlot(wc);
        });
    });
}

function drawPlot(wc) {
    // function which draws plot using jFlot using a huge dataset
}