按y位置查找哪一行
Find which row by y position
我使用以下命令在画布中生成行:
var offset = 20;
var rowHeight= 17;
for (var row=1;row<20;row++)
{
var yfrom = 4 + offset * row;
ctx.strokeRect(0, yfrom, 300, rowHeight);
}
现在,假设鼠标的位置为posY,那么确定鼠标是否在一行,以及在哪行,最快、更有效的方法是什么?
我可以很容易地通过搜索每一行来强行使用它,但我知道有更好的方法,但我无法理解它的数学。
方法1:
您可以对行的上y坐标进行二进制搜索。一旦得到鼠标Y坐标所在的两行的位置,就可以检查它是否位于行矩形内。
方法2:
或者既然你在计算:
yfrom = 4 + offset * row;
您可以反向计算
(Y - 4)/offset;
现在假设这个数字是3.6
现在检查Y
是否位于第3 or 4
行。
多亏了Abhishek Bansal,我得到了我想要的答案。因此,为了计算行,我使用Abhishek方法:
var row = (Y - 4)/offset;
为了知道我是否在行内,我计算除法的余数(模数),如果它小于或等于行高,那么我在行内;如果更大,我在外:
var inRow = (Y - 4)%offset <= rowHeight
相关文章:
- jquery试图按名称获取按钮位置
- 我可以获得相对于被点击元素的确切点击位置吗
- 谷歌地图固定位置覆盖
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 循环比赛位置算法
- es6 相当于下划线查找位置
- jQuery循环在特定位置暂停
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- 自定义函数中的光标位置
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 动态插入的表:JQuery未检测到最后一行
- 按y位置查找哪一行
- 检查脚本被调用的位置/哪一行或文档
- 如何检测位置是否位于文本区域中一行的开头
- 除了 JavaScript 之外,是否有任何其他语言在大括号开始位置(同一行和下一行)之间有区别
- 添加<td>到表的一行,但不是全部更改行位置
- jqGrid,如何通过模态形式在网格内的任何位置添加一行
- 在单击add函数的位置之后添加另一行
- 如何求出同一位置下一行td的索引
- 当下一行的单元格填充位置时,删除表单元格