offsetTop  是父结点的偏移距离,比如一个button 它的父结点有可以是td div span body 这些都有可能,而这些父结点的 offsetTop 值会相差很大的。

解决方案 »

  1.   

    但是,上诉代码,不就是得到所有父节点的偏移距离吗,难道他们的祖先不一样吗?
    顺便问,如何得知上诉代码中对象的类型,例如,dim or body or button?
      

  2.   

    <div onclick="alert(this.tagName)">my tag name is...</div>
      

  3.   

    <body id=body1>
    <div align=center id=div1>
    <table id=table1>
    <tr id=tr1><td id=td1>
    <form id=form1>
    <input type=button value=ok onclick=getTop(this)>
    </form>
    </td></tr>
    </table>
    </div>
    </body><script language=javascript>
    function getTop(e){
    var t=e.offsetTop
    while(e=e.offsetParent)
    {
        alert(e.id.toString());
        t+=e.offsetTop;
        alert(e.toString());
    }    
    return t;
    }
    </script>这里你可以清楚地看到:
    input -> td -> tr -> table -> div -> body -> window 这样递推的顺序
      

  4.   

    Sorry!类推顺序应该是td -> table -> body<body id=body1>
    <div align=center id=div1>
    <table id=table1>
    <tr id=tr1><td id=td1>
    <form id=form1>
    <input type=button value=ok name=bu onclick=getTop(this)>
    </form>
    </td></tr>
    </table>
    </div>
    </body><script language=javascript>
    function getTop(e){
    var t=e.offsetTop
    while(e=e.offsetParent)
    {
        alert(e.id.toString());
        t+=e.offsetTop;
    }    
    return t;
    }
    </script>