非整数DOMElement高度

时间:2011-03-29 10:51:33

标签: jquery css dhtml

我有一个包含行的表,需要弄清楚任何行的高度。

var height = $('table').find('tbody > tr').height();
console.log(height);

在我的特定情况下,产生18。好的,所以我用它来计算可滚动div中的索引。那是index = scrollTop / rowHeight,但有些不对。

经过进一步调查,我发现在这种情况下IE9的报告高度实际上是18.4。使用该值可以进行计算。

我无法弄清楚如何获得这个值。我尝试过的所有方法都使用jQuery,innerHeightouterHeight(包括和不包含边距)和height。它们都返回18个整数!?表格高度超过行数是一个公平的近似值(18.40625)但是,该值导致细微的舍入误差。我已尝试roundfloorceil无效。

我到目前为止设法使其工作的唯一方法是将每行高度修复为某个整数值。但我真的想要废除它,我应该能够计算行高,这样它就可以是任何值,只要它是恒定的。

18.4是计算出的line-height,并将此样式设置为整数可以解决问题,但我不想处理设备像素。我不明白为什么没有某种方法可以获得开发人员工具所显示的实际高度值(根据MSDN文档offsetHeight,但该属性是一个整数,这是错误的)。

我需要帮助。

1 个答案:

答案 0 :(得分:2)

这很痛苦,但我相信你应该能够通过window.getComputedStyle(elem,null)调用来达到最高点。如果你没有在标准模式下使用IE9,你需要转而使用IE专有的elem.currentStyle属性(其他浏览器自然会使用标准调用)。请记住,您需要将元素的填充和边框宽度添加到style.height值,并且您需要执行parseFloat值,因为它将在末尾返回“px”。