Javascript 如何获取数据表列的名称?
我使用的是数据表1.10.9(来自)。datatable的列在javascript的初始化步骤中定义,每列都有一个唯一的名称,例如:Javascript 如何获取数据表列的名称?,javascript,jquery,datatables,Javascript,Jquery,Datatables,我使用的是数据表1.10.9(来自)。datatable的列在javascript的初始化步骤中定义,每列都有一个唯一的名称,例如: var table = $('#example').DataTable({ columns: [ { name: 'first-name' }, { name: 'last-name' }, { name: 'position' },
var table = $('#example').DataTable({
columns: [
{ name: 'first-name' },
{ name: 'last-name' },
{ name: 'position' },
{ name: 'location' },
{ name: 'salary' }
]
});
我知道我可以从表中通过给定的名称获取列,但我似乎找不到如何从column对象中查找列的名称。(我希望组件的当前状态是可能的。)例如:
table.columns().every(function() {
//I'd want to see what the name of this column is, something like:
console.log(this.name()); //will throw an exception since no such function exists
//or
console.log(this.name); //will output 'undefined'
});
获取名称的正确函数或属性是什么?显示将
此设置为当前列的对象。对column对象的进一步检查表明,它有一个方法,该方法将列包含的数据作为值数组返回。这将提供您所需的数据。以下内容应适用于您:
您可以通过table.settings().init()
-检索初始化选项,并通过以下方式检索列的定义:
var columns = table.settings().init().columns;
单击单元格/
时,可以通过以下方式找到列索引(隐藏列的最佳做法):
单击单元格时向相应的列.name
发出警报的单击处理程序示例
$("#example").on('click', 'td', function() {
//get the initialization options
var columns = table.settings().init().columns;
//get the index of the clicked cell
var colIndex = table.cell(this).index().column;
alert('you clicked on the column with the name '+columns[colIndex].name);
})
您的every()
示例如下
var columns = table.settings().init().columns;
table.columns().every(function(index) {
console.log(columns[index].name);
})
演示->您可以尝试使用另一种方法。“index”变量是thead的一列。此方法将获取表的thead列并读取标记内的文本
dataTable.column(index.header().textContent
下面的代码对我有用
this.api().columns().every(function() {
console.log( this.header().textContent )
})
此外,您还可以仅为特定的列名添加特定的html类,例如拥有该类
this.api().columns(".myColumnClass").every(function() {
console.log( this.header().textContent )
})
这可能会起作用,但我希望有一个更以DataTable为中心的访问解决方案——遍历列的类只有DT对象引用,它无法访问tableColumns数组对于我在问题中给出的示例来说,这是可行的。我不是唯一一个发现他们的api如此向后正确的人?我需要table.settings().init().columnDefs
而不是table.settings().init().columns
现在可以得到colIndex
如下所示:var colIndex=table.column(this.index()代码>谢谢剩下的部分。有没有不带“init”的解决方案?这会给固定列带来问题op要求的是列名,而不是数据:)但文本内容与名称不匹配。
this.api().columns().every(function() {
console.log( this.header().textContent )
})
this.api().columns(".myColumnClass").every(function() {
console.log( this.header().textContent )
})