Здесь, вместо того, чтобы передавать this
в функции обратного вызова, вы должны передать event
, и вы можете использовать cellIndex
свойство td
и свойство rowIndex tr
, чтобы узнать фактические координаты в ваших терминах -
function myFunction(evt){
let row = evt.target.parentElement.rowIndex;
let col = evt.target.cellIndex;
console.log(row, col);
}
let myTable = document.getElementById('myTable');
let tds = myTable.querySelectorAll('td');
tds.forEach(function(td){
td.addEventListener('click', myFunction);
});
<table id="myTable">
<tr>
<td>1</td>
<td></td>
<td></td>
<td>4</td>
<td>8</td>
<td>9</td>
<td></td>
<td></td>
<td>6</td>
</tr>
<tr>
<td>7</td>
<td>3</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>4</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>1</td>
<td>2</td>
<td>9</td>
<td>5</td>
</tr>
<tr>
<td></td>
<td></td>
<td>7</td>
<td>1</td>
<td>2</td>
<td></td>
<td>6</td>
<td></td>
<td></td>
</tr>
<tr>
<td>5</td>
<td></td>
<td></td>
<td>7</td>
<td></td>
<td>3</td>
<td></td>
<td></td>
<td>8</td>
</tr>
<tr>
<td></td>
<td></td>
<td>6</td>
<td></td>
<td>9</td>
<td>5</td>
<td>7</td>
<td></td>
<td></td>
</tr>
<tr>
<td>9</td>
<td>1</td>
<td>4</td>
<td>6</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td>2</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td>3</td>
<td>7</td>
</tr>
<tr>
<td>8</td>
<td></td>
<td></td>
<td>5</td>
<td>1</td>
<td>2</td>
<td></td>
<td></td>
<td>4</td>
</tr>
Жить в действии - https://jsitor.com/XljAwX0j3