javascript - 如何获取表格行中单元格的完整位置(顶部和左侧)?
问题描述
我正在处理 React JS 中的表格。
我有这个代码演示 - 这是我在 CodeSandbox 中的演示 - https://codesandbox.io/s/2wp7jk23kr
我的表中有多个列。现在在任何列中,比如第 1 到 10 列,我想要一个可以计算特定单元格元素 (div) 位置的函数。如何在表格的单元格中获取特定 div 的位置。请回答我的演示。我正在尝试获取数据单元格而不是标题单元格的位置
我在某种程度上使用 React 和 vanilla JS。我不能使用 jQuery。
如果可能,您可以分叉/修改以展示如何将此功能引入我的表格。
我无法找到适用于我的代码的解决方案。
请告诉我如何找到关于表格和页面的位置
解决方案
要计算表格中的单元格偏移量,您可以使用getBoundingClientRect()
const tableRect = document.querySelector('table').getBoundingClientRect();
const cellRect = document.querySelector('#cell').getBoundingClientRect();
console.log(
cellRect.left - tableRect.left, // x
cellRect.top - tableRect.top // y
)
#cell { background: gold; }
<h1>Lorem ipsum</h1>
<table>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td id="cell">Find Me</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>Foo</td>
<td>Bar</td>
</tr>
</table>
推荐阅读
- node.js - 编译松露项目时出错,遇到未发现的错误,
- java - 如何将数字字符串转换为不同的 ArrayList
- java - 如何从spring boot调用python程序?
- java - 使用 HSQL 请求父实体时过滤一对多子实体
- ios - iOS 13 Top UIViewController 为 nil
- javascript - 使用 create-react-app 和 svgr 的 webpack 错误
- kotlin - 为什么我们不能在 kotlin 中的属性 getter 字段周围添加块
- python - 如何用另一个数据框中的索引替换一个数据框中的空白索引
- javascript - MongoDB:如何更新对象数组中的特定对象?
- android - 将日期转换为 firetstore 时间戳