2012-11-23 2 views
1

언어 열을 제거 : 잘 작동 아래
구글 차트는 여러 개의 체크 박스와

코드 자바 스크립트 jQuery를.

(...) 
var check_box_values = $('#myForm [type="checkbox"]:not(:checked)').map(function() 
{ 
    return this.value; 
}).get(); 

아래 코드는 : 잘 작동. 아래

function f(check_box_values) 
{ 
    (...) 
    var obj = jQuery.parseJSON(jsonData); 
    var data = google.visualization.arrayToDataTable(obj); 

코드 : 사이클 잘 간다하지만 문은 결코

for (var i = 1; i < data.getNumberOfColumns()-1; i++) 
{ 
    if ($.inArray(i, check_box_values) > -1) 
    { 
     data.removeColumn(i); 
    } 
} 

HTML 코드를 시작하지 않는 경우 : 잘 작동.

내가 뭘 잘못하고 있니? 참고 : check_box_values ​​배열이 채워집니다.

편집 : (. 예)
getNumberOfColumns: 6

check_box_values array: [1,3,5] 

답변

0

난 당신의 코드에서 문제를 참조하십시오. data.removeColumn이 호출되면 열 인덱스가 재설정되고 getNumberOfColumns()의 결과가 예상 한 것과 다를 수 있습니다. 즉,이 함수는 루프 내에서 호출되도록 설계되지 않았습니다.

다음은 예입니다. columIndex가 0 ~ 4 범위 인 5 개의 열이 있다고 가정합니다. 세 번째 (columnIndex : 2)와 다섯 번째 (columnIndex : 4) 열을 제거하려고합니다. 일단 코드가 처음 실행되면 (즉, removeColumn (2)), 열 인덱스가 이동하고 getNumberOfColumns()가 4가됩니다. removeColumn (4)를 호출하면 인덱스가 실행되기 때문에 런타임 오류가 발생합니다 어떤 열을 가리키고 있지 않습니다. 대신에 removeColumn (3)을 호출해야합니다.

관련 문제