如何计算div中元素的offsetTop - 返回null?

时间:2011-06-15 20:26:47

标签: javascript scrolltop

我有一个div“内容”,其中包含锚id="one"

现在,我正在使用来自外部链接的onClick事件来滚动“内容”一个像素距离,以使“一个”进入视图而不会使页面的其余部分跳转,并且它按计划运行良好和平滑。 。

onClick="document.getElementById('content').scrollTop = 400;

但我宁愿计算“one”的确切offsetTop距离并滚动该距离而不是我的任意数字。

这就是我的尝试:

<script type="text/javascript">
<!--
var topPos = document.getElementById('one').offsetTop;
//-->
</script>

onClick="document.getElementById('content').scrollTop = topPos;

<a id="one"></a> being how I ID the element within the content.

但topPos返回null!我似乎无法超越这个。我不知道这是不是我的糟糕的javascript技能(可能)或我的CSS没有提供任何数字的事实。如果这很重要,我不会使用固定定位。谁能告诉我我的明显错误?提前谢谢。

2 个答案:

答案 0 :(得分:1)

有什么理由不使用scrollIntoView()

https://developer.mozilla.org/en/DOM/element.scrollIntoView

答案 1 :(得分:0)

根据脚本的位置,可能是因为浏览器还没有足够的信息来检索topPos。尝试将脚本放在页面底部或运行它以响应页面加载事件。 或者,不要提前计算,只需让onClick调用一个函数来计算位置并设置滚动。