对于使用DOM的行计数,我们有tablename.rows.length来获取行数,但是我们没有'cols.length'来计算列数。
我们如何找到列数(仅使用DOM)?
答案 0 :(得分:7)
我将使用表的rows
属性和第一行的cells
属性,并总计行中每个单元格的colSpan
属性。这将适用于所有主流浏览器,返回到IE 4,应该非常快。
代码:
function getTableColumnCount(table) {
var columnCount = 0;
var rows = table.rows;
if (rows.length > 0) {
var cells = rows[0].cells;
for (var i = 0, len = cells.length; i < len; ++i) {
columnCount += cells[i].colSpan;
}
}
return columnCount;
}
答案 1 :(得分:4)
我认为您可以使用单元格来计算列,假设第一行的列数对于所有列都相同
tablename.rows[0].cells.length;
答案 2 :(得分:2)
DOM中没有这样的概念。
您可以尝试计算td
中th
和tr
的最大数量:
var max = 0;
$('#tableId tr').each(function(){max=Math.max(max, $('td,th', this).length)});
如果你想考虑colspan,它会更重一点:
var max = 0;
$('#tableId tr').each(function(){
var inTr = 0;
$('td,th', this).each(function() { inTr += parseInt($(this).attr('colspan')) || 1;});
max = Math.max(max,inTr);
});
答案 3 :(得分:0)
你走了:
$(function() {
var colCount = 0;
$('tr:nth-child(1) td').each(function () {
if ($(this).prop('colspan')) {
colCount += +$(this).prop('colspan');
} else {
colCount++;
}
});
alert(colCount);
});
答案 4 :(得分:0)
这适用于复杂的表头:
$($('#table_id_here tbody tr')[0]).find('td').length
答案 5 :(得分:0)
在任何表中获取可能cols数量的一种非常简单的方法是使用以下(vanillaJS)函数:
/**
* Calculates the number of columns based on any row using colSpan attribute.
*
* @param {HTMLElement} table : The table element to be count.
*
* @return {int} The number of columns this table has.
*/
var getTableColSpan = function getTableColSpan(table) {
var colSpan = 0; // initialize counter
var trs = table.querySelectorAll('tr'); // get firt tr cells.
for (var j = 0; j < trs.length; j++) {
var tr = trs[j];
var tds = tr.cells;
var trColSpan = 0; // initialize counter
// loops between columns and gets each one's colSpan
for (var i = 0; i < tds.length; ++i) {
trColSpan += tds[i].colSpan;
}
colSpan = trColSpan > colSpan ? trColSpan : colSpan;
}
return colSpan;
};