如何将 JavaScript 数组传递给 DataTable() 中的函数
How to pass JavaScript array to a function in DataTable()
我要replicate the following code in DataTables example。
它所做的只是为每一列显示一个下拉列表。
这些下拉列表可以在 table.
的底部看到
但对于我的情况,我不想使用 HTML table,而是想传递 JS 数组。
这是代码
var dataSet = [
["Airi Satou", "Accountant", "Tokyo", "5407", "2008/11/28", "2,700"],
["Angelica Ramos", "Chief Executive Officer (CEO)", "London", "5797", "2009/10/09", ",200,000"],
["Gavin Joyce", "Developer", "Edinburgh", "8822", "2010/12/22", ",575"],
["Jennifer Chang", "Regional Director", "Singapore", "9239", "2010/11/14", "7,650"],
["Brenden Wagner", "Software Engineer", "San Francisco", "1314", "2011/06/07", "6,850"],
["Fiona Green", "Chief Operating Officer (COO)", "San Francisco", "2947", "2010/03/11", "0,000"],
["Shou Itou", "Regional Marketing", "Tokyo", "8899", "2011/08/14", "3,000"],
["Martena Mccray", "Post-Sales support", "Edinburgh", "8240", "2011/03/09", "4,050"],
["Unity Butler", "Marketing Designer", "San Francisco", "5384", "2009/12/09", ",675"]
];
$(document).ready(function() {
$('#example').DataTable( {
data: dataSet,
columns: [{title: "Name"},
{title: "Position"},
{title: "Office"},
{title: "Extn."},
{title: "Start date"},
{title: "Salary"}],
// This function doesn't work as expected.
// It should create the drop down list for every column
// see DT link given earlier.
initComplete: function (setting, json) {
this.api().columns().every( function () {
var column = this;
var select = $('<select><option value=""></option></select>')
.appendTo( $(column.footer()).empty() )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search( val ? '^'+val+'$' : '', true, false )
.draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
}
} );
} );
<link href="https://cdn.datatables.net/r/dt/jq-2.1.4,dt-1.10.9,b-1.0.3,b-flash-1.0.3/datatables.min.css" rel="stylesheet"/>
<script src="https://cdn.datatables.net/r/dt/jq-2.1.4,dt-1.10.9,b-1.0.3,b-flash-1.0.3/datatables.min.js"></script>
<table id="example" class="display" width="100%">
请注意,当您 运行 代码段时,initComplete
下的功能不起作用。我希望最终结果显示如下下拉列表:
有什么办法吗?
如果要向页脚添加数据,至少需要一个页脚
在您的代码中 $(column.footer())
return 没有创建 select
但从未添加到 dom
<table id="example" class="display" width="100%">
<tfoot>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
</table>
如果您不想手动添加页脚结构,您可以使用下面的 JS 代码的第一部分来创建此页脚
$(document).ready(function() {
var columns = [
{title: "Name"},
{title: "Position"},
{title: "Office"},
{title: "Extn."},
{title: "Start date"},
{title: "Salary"}
];
// Footer construction
var $tfoot = $("#example tfoot tr");
for (var i = 0, len = columns.length; i < len ; i++){
$tfoot.append("<th>");
}
$('#example').DataTable( {
data: dataSet,
columns: columns,
initComplete: function (setting, json) {
this.api().columns().every( function () {
var column = this;
var select = $('<select><option value=""></option></select>')
.appendTo( $(column.footer()).empty() )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search( val ? '^'+val+'$' : '', true, false )
.draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
}
} );
} );
var dataSet = [
["Airi Satou", "Accountant", "Tokyo", "5407", "2008/11/28", "2,700"],
["Angelica Ramos", "Chief Executive Officer (CEO)", "London", "5797", "2009/10/09", ",200,000"],
["Gavin Joyce", "Developer", "Edinburgh", "8822", "2010/12/22", ",575"],
["Jennifer Chang", "Regional Director", "Singapore", "9239", "2010/11/14", "7,650"],
["Brenden Wagner", "Software Engineer", "San Francisco", "1314", "2011/06/07", "6,850"],
["Fiona Green", "Chief Operating Officer (COO)", "San Francisco", "2947", "2010/03/11", "0,000"],
["Shou Itou", "Regional Marketing", "Tokyo", "8899", "2011/08/14", "3,000"],
["Martena Mccray", "Post-Sales support", "Edinburgh", "8240", "2011/03/09", "4,050"],
["Unity Butler", "Marketing Designer", "San Francisco", "5384", "2009/12/09", ",675"]
];
<link href="https://cdn.datatables.net/r/dt/jq-2.1.4,dt-1.10.9,b-1.0.3,b-flash-1.0.3/datatables.min.css" rel="stylesheet"/>
<script src="https://cdn.datatables.net/r/dt/jq-2.1.4,dt-1.10.9,b-1.0.3,b-flash-1.0.3/datatables.min.js"></script>
<table id="example" class="display" width="100%">
<tfoot><tr></tr></tfoot>
</table>
我要replicate the following code in DataTables example。 它所做的只是为每一列显示一个下拉列表。 这些下拉列表可以在 table.
的底部看到但对于我的情况,我不想使用 HTML table,而是想传递 JS 数组。 这是代码
var dataSet = [
["Airi Satou", "Accountant", "Tokyo", "5407", "2008/11/28", "2,700"],
["Angelica Ramos", "Chief Executive Officer (CEO)", "London", "5797", "2009/10/09", ",200,000"],
["Gavin Joyce", "Developer", "Edinburgh", "8822", "2010/12/22", ",575"],
["Jennifer Chang", "Regional Director", "Singapore", "9239", "2010/11/14", "7,650"],
["Brenden Wagner", "Software Engineer", "San Francisco", "1314", "2011/06/07", "6,850"],
["Fiona Green", "Chief Operating Officer (COO)", "San Francisco", "2947", "2010/03/11", "0,000"],
["Shou Itou", "Regional Marketing", "Tokyo", "8899", "2011/08/14", "3,000"],
["Martena Mccray", "Post-Sales support", "Edinburgh", "8240", "2011/03/09", "4,050"],
["Unity Butler", "Marketing Designer", "San Francisco", "5384", "2009/12/09", ",675"]
];
$(document).ready(function() {
$('#example').DataTable( {
data: dataSet,
columns: [{title: "Name"},
{title: "Position"},
{title: "Office"},
{title: "Extn."},
{title: "Start date"},
{title: "Salary"}],
// This function doesn't work as expected.
// It should create the drop down list for every column
// see DT link given earlier.
initComplete: function (setting, json) {
this.api().columns().every( function () {
var column = this;
var select = $('<select><option value=""></option></select>')
.appendTo( $(column.footer()).empty() )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search( val ? '^'+val+'$' : '', true, false )
.draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
}
} );
} );
<link href="https://cdn.datatables.net/r/dt/jq-2.1.4,dt-1.10.9,b-1.0.3,b-flash-1.0.3/datatables.min.css" rel="stylesheet"/>
<script src="https://cdn.datatables.net/r/dt/jq-2.1.4,dt-1.10.9,b-1.0.3,b-flash-1.0.3/datatables.min.js"></script>
<table id="example" class="display" width="100%">
请注意,当您 运行 代码段时,initComplete
下的功能不起作用。我希望最终结果显示如下下拉列表:
有什么办法吗?
如果要向页脚添加数据,至少需要一个页脚
在您的代码中 $(column.footer())
return 没有创建 select
但从未添加到 dom
<table id="example" class="display" width="100%">
<tfoot>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</tfoot>
</table>
如果您不想手动添加页脚结构,您可以使用下面的 JS 代码的第一部分来创建此页脚
$(document).ready(function() {
var columns = [
{title: "Name"},
{title: "Position"},
{title: "Office"},
{title: "Extn."},
{title: "Start date"},
{title: "Salary"}
];
// Footer construction
var $tfoot = $("#example tfoot tr");
for (var i = 0, len = columns.length; i < len ; i++){
$tfoot.append("<th>");
}
$('#example').DataTable( {
data: dataSet,
columns: columns,
initComplete: function (setting, json) {
this.api().columns().every( function () {
var column = this;
var select = $('<select><option value=""></option></select>')
.appendTo( $(column.footer()).empty() )
.on( 'change', function () {
var val = $.fn.dataTable.util.escapeRegex(
$(this).val()
);
column
.search( val ? '^'+val+'$' : '', true, false )
.draw();
} );
column.data().unique().sort().each( function ( d, j ) {
select.append( '<option value="'+d+'">'+d+'</option>' )
} );
} );
}
} );
} );
var dataSet = [
["Airi Satou", "Accountant", "Tokyo", "5407", "2008/11/28", "2,700"],
["Angelica Ramos", "Chief Executive Officer (CEO)", "London", "5797", "2009/10/09", ",200,000"],
["Gavin Joyce", "Developer", "Edinburgh", "8822", "2010/12/22", ",575"],
["Jennifer Chang", "Regional Director", "Singapore", "9239", "2010/11/14", "7,650"],
["Brenden Wagner", "Software Engineer", "San Francisco", "1314", "2011/06/07", "6,850"],
["Fiona Green", "Chief Operating Officer (COO)", "San Francisco", "2947", "2010/03/11", "0,000"],
["Shou Itou", "Regional Marketing", "Tokyo", "8899", "2011/08/14", "3,000"],
["Martena Mccray", "Post-Sales support", "Edinburgh", "8240", "2011/03/09", "4,050"],
["Unity Butler", "Marketing Designer", "San Francisco", "5384", "2009/12/09", ",675"]
];
<link href="https://cdn.datatables.net/r/dt/jq-2.1.4,dt-1.10.9,b-1.0.3,b-flash-1.0.3/datatables.min.css" rel="stylesheet"/>
<script src="https://cdn.datatables.net/r/dt/jq-2.1.4,dt-1.10.9,b-1.0.3,b-flash-1.0.3/datatables.min.js"></script>
<table id="example" class="display" width="100%">
<tfoot><tr></tr></tfoot>
</table>