我用這個代碼來獲得一個TD的索引的表:的Javascript表TD的指數
var tdIndex = this || (e || event).target;
var index = tdIndex.cellIndex;
的問題是,每行的指數在0再次啓動; 例如,第一行的第一個單元格的索引爲0.類似地,第二行中的第一個單元格的索引也是0,以此類推。我不希望索引被重置爲0表中的每一行。我希望索引號繼續在上一行的最後一個單元格中停留的地方。
我用這個代碼來獲得一個TD的索引的表:的Javascript表TD的指數
var tdIndex = this || (e || event).target;
var index = tdIndex.cellIndex;
的問題是,每行的指數在0再次啓動; 例如,第一行的第一個單元格的索引爲0.類似地,第二行中的第一個單元格的索引也是0,以此類推。我不希望索引被重置爲0表中的每一行。我希望索引號繼續在上一行的最後一個單元格中停留的地方。
問你的細胞是否爲父行,然後得到rowIndex
。
var rowIndex = e.target.parentElement.rowIndex;
上面的代碼假定e
爲您的活動和target
是你的。您的(e || event)
代碼並不是真的必要,因爲您根據聲明事件處理程序的方式來決定事件對象的命名。
您需要考慮rowIndex
屬性以獲取每個單元格的唯一編號。
理想的每個單元在JS定義爲唯一對(rowIndex,cellIndex
)
var tdIndex = this || (e || event).target;
var index = tdIndex.cellIndex + 1000 * tdIndex.rowIndex;
記下你可以使用任何數字,而不是1000。它應該只是比列的最大數量表
像這樣的事情可以做的伎倆,甚至如果細胞的數量是不是在每一行同樣會工作:
const table = document.querySelector('#table__base');
const cellOne = document.querySelector('#cellOne');
const cellTwo = document.querySelector('#cellTwo');
function getIndex(table, cell) {
let counter = 0;
for (let i = 0, len = cell.parentNode.rowIndex; i <= len; i += 1) {
let numberOfCellsInThisRow = (i === cell.parentNode.rowIndex) ? cell.cellIndex : table.rows[i].cells.length;
counter += numberOfCellsInThisRow;
}
return counter;
}
console.log(getIndex(table, cellOne));
console.log(getIndex(table, cellTwo));
<table id="table__base">
<tr>
<td>0</td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
</tr>
<tr>
<td>6</td>
<td>7</td>
<td>8</td>
<td id="cellOne">9</td>
<td>10</td>
<td>11</td>
</tr>
<tr>
<td>12</td>
<td>13</td>
<td id="cellTwo">14</td>
<td>15</td>
<td>16</td>
<td>17</td>
</tr>
</table>
請分享完整代碼 –
嘗試獲取與索引一起的行數,以便您可以輕鬆識別單元。 –