JSFiddle - React, Tailwind, and code Playground

HTML

<table onclick='checkCellIndex(event)' cellpadding=10 border=1>
  <tr>
    <td>0</td>
    <td rowspan=3>a</td>
    <td colspan=2>b</td>
    <td>c</td>
  </tr>
  <tr>
    <td colspan=2>1</td>
    <td>d</td>
    <td>e</td>
    <td>f</td>
  </tr>
  <tr></tr>
</table>

JavaScript

checkCellIndex = function(event) {
	var cell = event.target;
  var table = event.currentTarget;
  
	var grid = [];
  for(var i = 0; i < table.rows.length; i++) {
  	var currentRow = table.rows[i];
    var currentGridRow = grid[i] || (grid[i] = []);
    for(var j = 0; j < currentRow.cells.length; j++) {
    	var currentCell = currentRow.cells[j];
      var c = 0; while(currentGridRow[c]) { c++; }
      for(var cx = 0; cx < Math.max(1,currentCell.colSpan|0); cx++) {
        for(var rx = 0; rx < Math.max(1,currentCell.rowSpan|0); rx++) {
          var gridRowToUpdate = grid[i+rx] || (grid[i+rx] = []);
          gridRowToUpdate[c+cx] = gridRowToUpdate[c+cx] || currentCell;
        }
      }
    }
  }
  
  //alert(grid.map(row => JSON.stringify(row.map(cell => cell ? cell.textContent : ''))).join('\n'));
  for(var rx = 0; rx < grid.length; rx++) {
  	for(var cx = 0; cx < grid[rx].length; cx++) {
    	if(grid[rx][cx] == cell) { 
      	alert((1+rx)+'x'+(1+cx));
        rx = grid.length;
        break;
    }
   }
 }
  
}