Javascript 如何计算div中元素的偏移量-返回null?

Javascript 如何计算div中元素的偏移量-返回null?,javascript,scrolltop,Javascript,Scrolltop,我有一个div“content”,里面有锚id=“one” 现在,我正在使用外部链接的onClick事件将“内容”滚动一个像素距离,以将“一”带到视图中,而不会使页面的其余部分跳转,并且按照计划工作良好且平滑 onClick="document.getElementById('content').scrollTop = 400; 但我宁愿计算“一”的精确偏移距离,然后滚动该距离,而不是我的任意数字 这就是我正在尝试的: <script type="text/javascript">

我有一个
div
“content”,里面有锚
id=“one”

现在,我正在使用外部链接的onClick事件将“内容”滚动一个像素距离,以将“一”带到视图中,而不会使页面的其余部分跳转,并且按照计划工作良好且平滑

onClick="document.getElementById('content').scrollTop = 400;
但我宁愿计算“一”的精确偏移距离,然后滚动该距离,而不是我的任意数字

这就是我正在尝试的:

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

是我在内容中标识元素的方式。

但是topPos返回null!我似乎无法克服这一点。我不知道这是我糟糕的javascript技能(可能)还是我的css没有提供任何数字。如果这很重要,我不会使用固定定位。谁能告诉我我的明显错误吗?提前感谢。

有什么理由不使用
scrollIntoView()


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

检查是否在创建脚本之前执行脚本,这将解释它。确保在创建脚本后执行脚本。是的!将JS移到底部确实允许计算这些变量。非常感谢您今天的帮助。不幸的是,尽管scrollIntoView()确实会滚动div的内容,但它也会将父页面移动到浏览器窗口中“content”div的中心。。。页面笨拙地跳转,这就是我用这段代码成功避免的。这是一个很棒的答案。。它符合我的要求。。谢谢你,克里斯
onClick="document.getElementById('content').scrollTop = topPos;
<a id="one"></a> being how I ID the element within the content.