이것은 내 첫 번째 게시물이지만이 커뮤니티에 가입하게되어 기쁩니다. JavaScript에 관해서 내가 완전히 혼란스러워하는 질문이 있습니다.JavaScript 메소드는 변수가 할당 된 상태에서 시작됩니다. ?? 매우 혼동했습니다
저는 아약스를 사용하여 서버에서 데이터를 가져 와서 차트에 추가하는 JavaScript 애플리케이션을 작성하고 있습니다. Jquery와 Highcharts를 프레임 워크로 사용하고 인터페이스를 생성하기 위해 Highcharts 주변에 자체 JavaScript 'wrapper'를 작성했습니다.
jSON 응답으로 processData 함수를 다시 호출하면 초기화되지 않거나 심지어 선언되지 않아도 i = 1로 시작됩니다. 다른 변수도 설정됩니다. (크롬 개발자 도구를 사용하여 디버깅 할 수 있음을 알고 있습니다.) 그러면 루프가 실행되지 않고 내 데이터가 차트에 추가되지 않습니다.
얼마나 많은 코드를 표시해야할지 모르지만 가장 관련이있는 부분입니다. 필요한 경우 더 추가 할 수 있습니다.
function getData(series, min, max, numpts) {
if (series === undefined) {
console.log("error on getData");
return;
}
var request = {};
request.series = series;
if (min !== undefined) {
request.start = min;
} //in seconds
if (max !== undefined) {
request.end = max;
}
if (numpts !== undefined) {
request.numpts = numpts;
}
$.getJSON('/data', request, processData);
return;
}
function processData(data) {
// handle the data after it comes back from an ajax request
var curSeries,
chartSeries,
curPoint;
for (var i = 0; i < data.length; i ++) {
curSeries = data[i];
chartSeries = chart.get(curSeries.name);
if (chartSeries === null) {
//alert("oops");
chart.addSeries(curSeries);
} else {
for (var j = 0; j < curSeries.data.length; j ++) {
curPoint = curSeries.data[j];
chartSeries.addPoint(curPoint, false);
}
}
}
chart.redraw();
}
이들은 모두 그래프라고 선언 된 클래스의 메소드입니다.
아무도 아이디어가 있다면 고마워! - 매트 P
'i'는 결코 1로 시작하지 않을 것입니다. 루프가 실행되지 않는 유일한 방법은 data.length == 0. 만약'processData'의 맨 위에서'alert (data.length)'를하고 확인하십시오. – Matt