在表中查找TD的位置

Finding the location of a TD in a table

本文关键字:位置 TD 查找      更新时间:2023-09-26

假设我有一个表格,我想在其中操作一个特定的<td>:

HTML:

<table>
    <tr><td>1</td> <td>2</td></tr>
    <tr><td>3</td> <td>4</td></tr>
    <tr><td id="hi">5</td> <td>6</td></tr>
</table>
Javascript:

document.getElementsByTagName("table")[0].rows[2].cells[0];

这将帮助我到达表中的特定单元格。


我的问题是:

假设我在一个表中有一个特定的<td>:

var td = document.getElementById("hi")

我想知道它在表中的位置,所以我可以使用table.rows[x].cells[y]到达它我如何查看这个位置?

我建议,正如您所暗示的那样,您知道要查找哪个特定的单元格,尽管目前尚未测试:

var td = document.getElementById("hi"),
    col = td.cellIndex,
    row = td.parentNode.rowIndex;

td元素的cellIndex属性给出了行中单元格的索引。
tr元素的rowIndex属性给出了表中该行的索引。

var td = document.getElementById("hi");
var x = td.cellIndex;
var y = td.parentNode.rowIndex;

您需要这样做:

function getRowCellPosition(table, cell) {
    for (var i = 0; i < table.rows.length; i++) {
        for (var j = 0; j < table.rows[i].cells.length; j++) {
            if (table.rows[i].cells[j] === cell) {
                return {
                    row: i,
                    cell: j
                };
            }
        }
    }
    return null;
}

或更简单:

function getRowCellPosition(cell) {
    return {
        row: cell.parentNode.rowIndex,
        cell: cell.cellIndex
    }
}

只需创建一个for循环,遍历每一行和每一列,并将该索引中的TD与您想要的TD进行比较。

试试这个:

行:

Array.slice(el.parentNode.parentNode.children).indexOf(el.parentNode)
上校:

Array.slice(el.parentNode.children).indexOf(el)

切片魔术是因为el.parentNode.children不是一个数组。

我不知道td.cellIndextr.rowIndex