JSFiddle - React, Tailwind, and code Playground
HTML
<table id=table>
<col />
<col span="2" />
<col id="col-c" />
<tr>
<td>a</td><td colspan="2">b</td><td id=c>c</td>
</tr>
</table>
<div id=log></div>
JavaScript
function getElementColumn(td)
{
var tr = td.parentNode;
var col = 0;
for (var i = 0, l = tr.childNodes.length; i < l; ++i) {
var td2 = tr.childNodes[i];
if (td2.nodeType != 1) continue;
if (td2.nodeName.toLowerCase() != 'td' && td2.nodeName.toLowerCase() != 'th') continue;
if (td2 === td) {
return col;
}
var colspan = +td2.getAttribute('colspan') || 1;
col += colspan;
}
}
function getCol(table, colNumber)
{
var col = 0;
var cg;
for (var i = 0, l = table.childNodes.length; i < l; ++i) {
var elem = table.childNodes[i];
if (elem.nodeType != 1) continue;
if (elem.nodeName.toLowerCase() != 'colgroup') continue;
cg = elem;
break;
}
if (!cg) return;
for (var i = 0, l = cg.childNodes.length; i < l; ++i) {
var elem = cg.childNodes[i];
console.log(elem);
if (elem.nodeType != 1) continue;
if (elem.nodeName.toLowerCase() != 'col') continue;
if (col == colNumber) return elem;
var colspan = +elem.getAttribute('span') || 1;
col += colspan;
}
}
var colNumber = getElementColumn(document.getElementById('c'));
$('#log').append('<div>colNumber: ' + colNumber + '</div>');
var col = getCol(document.getElementById('table'), colNumber);
$('#log').append('<div>col: ' + col.id + '</div>');