2012-11-23 58 views
1

語言:jQuery的,下面的JavaScript
谷歌,圖表與多個複選框刪除列

代碼:運作良好。下面

(...) 
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。您想刪除3rd(columnIndex:2)和5th(columnIndex:4)列。第一次執行代碼(即removeColumn(2))後,列索引將被移位,getNumberOfColumns()將變爲4.如果調用removeColumn(4),則會導致運行時錯誤,因爲索引沒有指向任何列。您應該調用removeColumn(3)。