2010-07-22 6 views
0

자바 스크립트 함수 내에서 전역 변수의 값을 변경하려고 시도하지만 그 값이 적용되지 않는 이유가 확실하지 않습니다. (틀림없이, 나는 경험 많은 자바 스크립트 사람이 아니다.) 여기 내 코드가있다 :글로벌 자바 스크립트 변수의 값 변경

var title_chart = ""; 

google.load("visualization", "1", {packages:["corechart"]}); 

google.setOnLoadCallback(drawChart); 

function drawChart() { 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'Country'); 
    data.addColumn('number', 'Number of Entries'); 

    jQuery.getJSON('/data/stats.json', function(chart_data) { 
    title_chart = chart_data.chart_title; 
    jQuery.each(chart_data.stats, function(index, value){ 
     data.addRows(1); 
     data.setValue(index, 0, value.chart_label); 
    }); 
    }); 

    var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
    chart.draw(data, {width: 450, height: 300, title: title_chart}); 

} 

고마워!

+1

전역 변수는 무엇입니까? 더 자세하게 얘기해 주 시겠어요? –

+0

window.variable = "값을 설정하고 싶습니다"글로벌 자바 스크립트 변수의 값을 설정해야합니다. 참조 용 링크 참조 https://www.javatpoint.com/oprweb/test.jsp?filename=jsglobalvariable2 – showmyroutes

답변

1

getJSON은 비동기입니다. 대신 다음을 수행하십시오.

jQuery.getJSON('/data/stats.json', function(chart_data) { 
    var title_chart = chart_data.chart_title; 
    jQuery.each(chart_data.stats, function(index, value){ 
    data.addRows(1); 
    data.setValue(index, 0, value.chart_label); 
    }); 

    var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
    chart.draw(data, {width: 450, height: 300, title: title_chart}); 
}); 

문제는 바로 getJSON이 반환한다는 것입니다. 나중에 만 요청이 완료되면 콜백이 호출됩니다. 그동안 chart.draw이 이미 실행되었을 수 있습니다. 이 코드를 콜백 함수로 옮김으로써 적절한 시간에 실행되도록합니다. 또한 글로벌을 제거 할 수 있습니다.