【发布时间】:2018-08-31 00:03:34
【问题描述】:
我希望能够按行和列索引选择表格单元格,同时补偿rowspan 和colspan。例如,在下表中,
我希望将 (1,2) 红色、(2,3) 绿色和 (3,3) 蓝色着色:
我尝试了问题的答案"Selecting an arbitrary cell in a table by row and column number",但结果如下:
Here is the jsFiddle: http://jsfiddle.net/acheong87/27HuN/
我明白发生了什么,我什至发现了另一个问题,"Table cellIndex and rowIndex with colspan/rowspan",答案是作为插件提供的,但似乎没有更简单的方法!毕竟,实际结果的颜色似乎可以理解,但不直观,而预期结果的颜色似乎更直观,更容易掌握。
谁能想到一个聪明而简单的方法来实现它?
更新
Here's a new jsFiddle with my (poor) attempt, 以防它激发其他人的新想法。基本上,如果我们假设行和列标题没有跨越(当然,这不是一个有效的假设),那么我们可以使用偏移量来“定位”正确的单元格:
function getCell(table, r, c)
{
var rowHead = $(table.rows[r].cells[0]);
var colHead = $(table.rows[0].cells[c]);
var y = rowHead.offset().top + rowHead.outerHeight(true)/2;
var x = colHead.offset().left + colHead.outerWidth(true)/2;
return $(document.elementFromPoint(x, y));
}
虽然演示似乎可以运行,但存在许多问题:
- 不能假设行和列标题没有跨越。
- 如果行或列的中点不在视口之外,则不起作用;
elementFromPoint似乎取决于视口。 - 当滚动、边距等起作用时不能可靠地工作;一般脆弱;宁愿不依赖坐标数学。
【问题讨论】:
-
那么更复杂的模型呢?您要求通用的东西来解决每一种情况,而不仅仅是您所说的这种情况,所以这是表格的最坏情况示例:jsfiddle.net/27HuN/25。
-
@TravisJ - 你应该得到一半的接受答案代表,只是为了创建复杂的场景来测试。谢谢。 (业力正在向你走来 ;-)
标签: javascript jquery