2014-02-23 6 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 = []; 

그런 다음 그 data 속성을 설정하기 전에 해당 배열의 0th 요소를 정의해야합니다.

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

답변을 주셔서 감사합니다. 그래서 배열로 지정해야만 그 안에 아무 것도 설정하지 않아도 함수에서 사용할 수 있습니다. 옳은? – user2040597

관련 문제