2011-03-29 15 views
2

我有一個表中有行,需要找出任何行的高度。非整數DOMElement高度

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,但該屬性是一個整數,這是錯誤的)。

我需要幫助。

+0

你有18.4像素高度? – Headshota 2011-03-29 11:25:26

+0

@Shota - 我相信如此,它的檢查值和像素。我從來沒有設置行高,默認情況下是18.4像素。 – 2011-03-29 11:47:10

回答

2

這很痛苦,但我相信你應該能夠通過window.getComputedStyle(elem,null)調用獲得高度。如果您在標準模式下不使用IE9,則需要使用IE專有的elem.currentStyle屬性(其他瀏覽器自然使用標準調用)。請記住,您需要將元素的填充和邊框寬度添加到style.height值,並且您需要執行parseFloat該值,因爲它最終會返回「px」。