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' },

我使用的是数据表1.10.9(来自)。datatable的列在javascript的初始化步骤中定义,每列都有一个唯一的名称,例如:

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 )
})