2014-02-23 76 views
1

我在函数中使用全局变量,但似乎无法将其设置为某个值。javascript将函数中的全局变量赋值不起作用

我有这样的代码:

<script type="text/javascript"> 
    var chart; 
    var options = new Object(); 
       getdata = function(){ 
      return $.get('data.php', <?php echo ($params1); ?>, function(tsv) { 
      var lines = []; 
        traffic = []; 
        try { 
         // split the data return into lines and parse them 
         tsv = tsv.split(/\n/g); 
         jQuery.each(tsv, function(i, line) { 
          line = line.split(/\t/); 
          date = Date.parse(line[0] +' UTC'); 
          traffic.push([ 
           date, 
           parseFloat(line[1].replace(',', ''), 10) 
          ]); 
         }); 
        } catch (e) { } 
        options.series[0].data = traffic; 
       }); 
     }; 

    $.when(getdata()).done(function (resp){ 
         chart = new Highcharts.Chart(options); 
       }); 
</script> 

所以它不工作,除非作者的GetData功能之前,我写:

options.series = {[

  }]; 

能有什么我确实可以确保我可以在函数内部设置变量而无需编写它?

而且,当你的代码执行

options.series[0].data = traffic; 

options对象不具有series属性我不能设置像

options.series[0] = {}; 
+0

如果您有承诺,请勿使用全局变量! – Bergi

回答

0

。所以series[0]是未定义的。您应该定义该属性,或者在创建对象options或设置对象之前。

var options = new Object(); 
options.series = []; 

然后您就需要定义数组的元素0th之前,你可以设置其属性data

options.series[0] = {}; 
+0

好的谢谢你的答案,所以我将不得不指定它是一个数组,然后在里面没有设置它,然后我可以在函数中使用它。正确? – user2040597