如何从函数中获取变量?

时间:2015-09-30 09:34:30

标签: javascript javascript-events scope google-visualization

我正在尝试访问此功能以外的 myVariable 。请参阅以下代码:

var myVariable;
function drawBasic(){
...
  myVariable = document.getElementById('chart_div3');
  var chart = new google.visualization.LineChart(document.getElementById('chart_div'));


google.visualization.events.addListener(chart, 'ready', function () {
        chart_div.innerHTML = '<img src="' + chart.getImageURI() + '">';

        myVariable.innerHTML = chart.getImageURI();

        myVariable = myVariable.innerHTML;

        //prints out desired value
        console.log(myVariable);


});

//prints out desired value
console.log(myVariable);
...
}
//prints out undefined
    console.log(myVariable);

我知道 myVariable 是在函数外部定义的,所以我希望它可以在函数内部设置,然后值可以在其他地方使用,但我错了。所以我的问题是如何获取chart.getImageURI()的值并将其存储为函数drawBasic之外的值?

3 个答案:

答案 0 :(得分:2)

我认为这是因为“ var = myVariable ”中的语法问题。我写了这个并且它工作正常。

var myVariable;
drawBasic();
function drawBasic(){
   myVariable = "Test String";
   //prints out desired value
   console.log(myVariable);
}
//prints out undefined
console.log(myVariable);

jsfiddle example

答案 1 :(得分:0)

您可以在您的函数中使用jquery将chart.getImageURI()放在window.myVariable(始终可访问)或隐藏表单输入中: $( “#myHiddenItem”)。VAL(chart.getImageURI()) 以及你需要的价值: $( “#myHiddenItem”)。VAL()

答案 2 :(得分:0)

您的结果为undefined的原因可能是由于您的代码的执行顺序:您的最后一个console.log()之后被称为,而 drawBasic()是定义,但可能之前 drawBasic()执行

在函数内部,你可以这样做:

myVariable = chart.getImageURI();

调用函数时,将设置全局(因此可读的各处)变量myVariable的值。

执行drawBasic()之后,myVariable的值也应正确,在函数外部调用时也是如此。