4

所以假设我有一张桌子,我想在其中操作一个特定<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] 如何检查这个位置?

4

5 回答 5

10

我建议,因为您暗示您知道要找到哪个特定单元格,尽管目前未经测试:

var td = document.getElementById("hi"),
    col = td.cellIndex,
    row = td.parentNode.rowIndex;
于 2013-04-21T10:18:08.893 回答
4

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

所以,

var td = document.getElementById("hi");
var x = td.cellIndex;
var y = td.parentNode.rowIndex;
于 2013-04-21T10:21:18.177 回答
2

你将需要这样的东西:

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
    }
}
于 2013-04-21T10:16:08.143 回答
0

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

于 2013-04-21T10:14:16.173 回答
0

尝试这个:

对于行:

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

对于 col:

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

切片魔法是因为el.parentNode.children不是数组。

编辑:我不知道td.cellIndexand tr.rowIndex。绝对使用它们。

于 2013-04-21T10:18:46.437 回答