2014-02-23 75 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