2009-06-25 9 views
5

テーブル内の要素のoffsetTopを取得する方法がわかりません。テーブルの外側の要素は正常に動作しますが、テーブル内のすべての要素は同じ結果を返し、通常はページの上部に表示されます。私はFirefoxとChromeでこれを試しました。テーブル内の要素のoffsetTopを取得するにはどうすればよいですか?テーブルのoffsetTopを取得する

答えて

17

offsetTopは、offsetParentを基準にした値を返します。 offsetParentnullになるまで、すべての親を通して再帰的にoffsetParent.offsetTopを追加する必要があります。 jQueryoffset()メソッドを使用することを検討してください。

EDIT:あなたはjQueryのを使用したくない場合は、この(未テスト)などのメソッドを記述することができます。これは、IE7(確実)では動作しません

function offset(elem) { 
    if(!elem) elem = this; 

    var x = elem.offsetLeft; 
    var y = elem.offsetTop; 

    while (elem = elem.offsetParent) { 
     x += elem.offsetLeft; 
     y += elem.offsetTop; 
    } 

    return { left: x, top: y }; 
} 
+1

。 IE5-7では、offsetParentsとして相対的な配置を持つ要素はカウントされません。 – KeatsKelleher

+0

@SLAKs brilliant solution :) – Muhammed

関連する問題