2016-09-14 38 views
0

我想獲得一個動態生成的數組,並將其傳遞到colReorder的「order」選項。datatables colreorder訂單方法與變量數組

下正常工作:

var colOrder = [2,1,0]; 
$(document).ready(function() { 
    dataTable = $('#example').DataTable({ 
     colReorder: true 
    }); 
    dataTable.colReorder.order(colOrder); 
}); 

注意數組colOrder。我可以將該靜態數組的一個變量放入dataTables順序選項中。

當我通過具有JavaScript警告colOrder的內容進行測試,我得到:2,1,0(無支架)

但是,下面不工作:

HTML:

<input id="test" type="hidden" value="2,1,0" /> 

的Javascript:

var colOrder = new Array($('#test').val().split(",")); 
$(document).ready(function() { 
    dataTable = $('#example').DataTable({ 
     colReorder: true 
    }); 
    dataTable.colReorder.order(colOrder); 
}); 

當我通過具有JavaScript警告的內容測試colOrder這一次,我得到:2,1,0(沒有括號) - 我看不出有什麼區別! DataTable生成,並且colReorder甚至可以工作,但我提供的該變量的訂單號不起作用

我收到以下錯誤:ColReorder - 數組重新排序與已知數量的列不匹配。跳繩。

有人可以幫助我嗎?這裏是jsfiddle:https://jsfiddle.net/runnerjoe/k47puxux/1/

回答

0

您的不起作用的代碼是生產[["2","1","0"]],而不是[2,1,0]。刪除new Array包裝,因爲它將值嵌套在另一個數組中。您可能還需要到字符串轉換爲整數:

var colOrder = $('#test').val().split(",").map(function(index) { 
    return parseInt(index, 10); 
}); 

Updated fiddle

+0

不幸的是,現在陣列實際上看起來像[2不同,NaN,0],所以列仍然無序。請參閱:https://jsfiddle.net/runnerjoe/k47puxux/1/ – runnerjoe

+0

更新了我的答案 –

+0

這有效!謝謝。 – runnerjoe